-3

I need to parse JSON:

{
"Store":"GooglePlay",
"TransactionID":"here_is_google_transaction_id",
"Payload":"{"json":"{"packageName":"com.myapp.mypackage","productId":"com.myapp.mypackage.myproductid","purchaseTime":1489056122448,"purchaseState":0,"purchaseToken":"here_is_my_purchase_token"}",
"signature":"here_is_signature_g=="}"}

I need to get "Payload" attributes like "packageName", "productId" and so on. How can i do that with java?

I tried to use JsonParser:

    private static final void readJson(String json) {
    JsonParser parser = new JsonParser();
    JsonElement jsonElement = parser.parse(json);
    JsonObject rootObject = jsonElement.getAsJsonObject(); //get whole json object
    String store = rootObject.get("Store").getAsString(); //get store attribute value
    JsonObject childObject = rootObject.getAsJsonObject("Payload"); //get payload json object from root object
String packageName = childObject.get("packageName").getAsString();
System.out.println(store + " " + packageName);
}

But it throws an error when i'm trying to get the "Payload" object content:

Exception in thread "main" java.lang.ClassCastException: com.google.gson.JsonPrimitive cannot be cast to com.google.gson.JsonObject
    at com.google.gson.JsonObject.getAsJsonObject(JsonObject.java:191)

1 Answers1

0
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;

class JsonDecodeDemo {

   public static void main(String[] args){

      JSONParser parser = new JSONParser();
      String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";

      try{
         Object obj = parser.parse(s);
         JSONArray array = (JSONArray)obj;

         System.out.println("The 2nd element of array");
         System.out.println(array.get(1));
         System.out.println();

         JSONObject obj2 = (JSONObject)array.get(1);
         System.out.println("Field \"1\"");
         System.out.println(obj2.get("1"));    

         s = "{}";
         obj = parser.parse(s);
         System.out.println(obj);

         s = "[5,]";
         obj = parser.parse(s);
         System.out.println(obj);

         s = "[5,,2]";
         obj = parser.parse(s);
         System.out.println(obj);
      }catch(ParseException pe){

         System.out.println("position: " + pe.getPosition());
         System.out.println(pe);
      }
   }
}

A very simple representation of JSONParser.

And its output

The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}

Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]

Ref: https://www.tutorialspoint.com/json/json_java_example.htm

User1911
  • 394
  • 1
  • 5
  • 22