title: Check if json property is present, is string, and is correct value
body: <p>Using gson, I use this cumbersome approach to make sure a required property has a desired value:</p>
  
  <pre><code>import com.google.gson.JsonElement;
  import com.google.gson.JsonObject;
  import com.google.gson.JsonParser;
  
  public class ScratchSpace {
  
      public static void main(String[] args) {
  
          // create json object from source data - in my real code, this is sourced externally
          JsonObject json = new JsonParser().parse("{  \"product\": \"foobar\"}").getAsJsonObject();
  
          // does this object have a key called product, which is a string, and equal to our expected value?
          boolean correctProduct = false;
          if (json.has("product")) {
              JsonElement productElement = json.get("product");
              if (productElement.isJsonPrimitive()) {
                  String product = productElement.getAsString();
                  if ("foobar".equals(product)) {
                      correctProduct = true;
                  }
  
              }
          }
          System.out.println("correctProduct = " + correctProduct);
      }
  
  }
  </code></pre>
  
  <p>I'm almost certain I'm doing this suboptimally. Is there a simple, readable, short-ish one-liner to achieve the same?</p>
  
  <p>Edit: if possible, I'd like to keep using gson.</p>