json object convert to string java

橙三吉。 提交于 2021-02-17 02:06:36

问题


I have json file like this and i want convert from json to string using org.simple.json

{
   "header": 
      {
         "IssuerID": "000141",
         "AuthenticationID": "e07020c0d040a050a0808099",
         "AuthenticationDateTime": "20151103093035",
         "AuthenticationDateTimeGMT": "20151103093035",
         "Signature": "MThEMTExQkMzQzM0OUIxQjM5MDc2MjFGMzMyQjhDNTk1OTI0NDNERTg5ODcwQjNFOTc0ODQwNThBNkQxNTgzNTk2N0YzN0I2OTkyMzI1QjY2OENDQjgxRUNERDlGNDFDNzVCMzQ5Njg5NTY4NzkwNUQ5MzBDN0ExOTVGOUY0OUY2QjlCQzlDQkREOEQ3NjEzRkQ2OEYyMDhEQTY2QTkzNUZDM0UzOTI3RDk2OTYwODg4NTkyNzYyQUJCQkJFREZGNzNCNEEyNUU5OTc5OTFFODk2MTQ0Q0Y4Q0RGNzg1M0JBQTM4QkZBQzRFRUY2MTkzM0E4REI3QkQ0MEJBRkU4OTlEOTVDNTkxOTQ0M0IwNjMyMzZDQ0U4MzdBQTQzODU3RkMyOEQ0Rjk2NUMyRkNERUM0NDREQkIzNUM0QUVERDUzRjFBOTk5RTQ4Mjk4MzNERjU3RTQ1QUE2Nzc4MDUyRTdERTdGRTVFRURGRkVGMTlFN0Y2QTAyQTVCNjk3NUU2OUNGRUU3MzRGNDZDOTE0Q0U3NTk5NzdGNDkyOTdFQkRGREIwNDBCNDhBQTkzMzE1QjU0MzI1Njk0MjgxMjVDMzM5OUM3MTExNTg4NENBOTU3QTM4OTU5MTY5OTQ1NkQ2NDNFOUVEMjU5MjRDNzhEMDQxMEJGM0ZEQUVFM0Y1QTU="
      },

   "body": 
      {
         "TransactionDateTime": "0151103093035",
         "TransactionID": " SP020110216",
         "IASauthenticationRequestReferenceID": "h0IrqhqBoUpUCiSv17NB0vHvABIUxHGCurJZFzUWdZJz9TxYio",
         "VerificationID": "h0IrqhqBoUpUCiSv17NB0vHvABIUxHGCurJZFzUWdZJz9TxYio ",
         "Acquirer_id": "000014",
         "MerchantName": " Twin Hotel ",
         "CurrencyCodeISO": "360",
         "Amount": "970000.00",
         "CardNumber": " BmaHLuFRg4SaPnaGB07t5fNrHXr/lyOa ",
         "AuthenticationResponseCode": "00",
         "AuthenticationResponseDetails": "Success",
         "ValidityDateTimeExpireGMT": "20151103094035",
         "Expiry_Period": "10"
      }
}

When I convert using this script

    //  json parser array untuk extract json ke string 
JSONParser parser = new JSONParser();
Object obj = parser.parse(input);
JSONObject jsonObject = (JSONObject) obj;

 JSONArray msg = (JSONArray) jsonObject.get("header");
//JSONArray array = new JSONArray();
//array.add("header");
 Iterator<JSONObject> iterator = msg.iterator();
                System.out.println("Header ");       
 while (iterator.hasNext()) {
 JSONObject factObj = (JSONObject) iterator.next();
  IssuerID = (String) factObj.get("IssuerID");
 System.out.println("Issuer ID : " + IssuerID);

  AuthenticationID = (String) factObj.get("AuthenticationID");
 System.out.println("AuthenticationID : " +AuthenticationID);

  AuthenticationDateTime = (String) factObj.get("AuthenticationDateTime");
 System.out.println("Authentication Date Time : " + AuthenticationDateTime);

  AuthenticationDateTimeGMT = (String) factObj.get("AuthenticationDateTimeGMT");
 System.out.println("AuthenticationDateTimeGMT : " + AuthenticationDateTimeGMT);

 Signature = (String) factObj.get("Signature");
 System.out.println("Signature : " + Signature);
 }
  //loop array
 JSONArray msg1 = (JSONArray) jsonObject.get("body");

                System.out.println("Body");
 Iterator<JSONObject> iterator1 = msg1.iterator();

 while (iterator1.hasNext()) {
 JSONObject factObj = (JSONObject) iterator1.next();

 TransactionDateTime = (String) factObj.get("TransactionDateTime");
 System.out.println("Transaction DateTime: " + TransactionDateTime );

 TransactionID = (String) factObj.get("TransactionID");
 System.out.println("Transaction ID : " + TransactionID);

   IASauthenticationRequestReferenceID = (String) factObj.get("IASauthenticationRequestReferenceID");
 System.out.println("IASauthenticationRequestReferenceID : " + IASauthenticationRequestReferenceID);

   VerificationID  = (String) factObj.get("VerificationID");
 System.out.println("VerificationID : " + VerificationID);


 Acquirer_id= (String) factObj.get("Acquirer_id");
 System.out.println("Acquirer id : " + Acquirer_id);

  MerchantName = (String) factObj.get("MerchantName");
 System.out.println("Merchant Name: " + MerchantName);

CurrencyCodeISO = (String) factObj.get("CurrencyCodeISO");
 System.out.println("CurrencyCodeISO : " + CurrencyCodeISO);

 Amount = (String) factObj.get("Amount");
 System.out.println("Amount : " + Amount);

 CardNumber= (String) factObj.get("CardNumber");
 System.out.println("Card Number : " + CardNumber);

  AuthenticationResponseCode = (String) factObj.get("AuthenticationResponseCode");
 System.out.println("Authentication Response Code: " + AuthenticationResponseCode);

   AuthenticationResponseDetails = (String) factObj.get("AuthenticationResponseDetails");
 System.out.println("Authentication Response Detail : " + AuthenticationResponseDetails);

   ValidityDateTimeExpireGMT    = (String) factObj.get("ValidityDateTimeExpireGMT");
System.out.println("Validity DateTime Expire GMT : " + ValidityDateTimeExpireGMT);

  Expiry_Period = (String) factObj.get("Expiry_Period");
 System.out.println("Expiry Period : " + Expiry_Period);
 }

i got error like this

java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray at Artajasa.Gateway.SubSystem.Process.RequestThread.run(RequestThread.java:636) at java.lang.Thread.run(Thread.java:745)

when i add [ ] in front of header and body i got the correct result, my problem is it's not json array insted json object can anyone give me solution


回答1:


According to your JSON structure and your stack trace, header and body are both obviously JSONObjects not JSONArrays that is why you get this error when you try to cast them as JSONArray, try to cast them as JSONObject instead as next:

JSONObject msg = (JSONObject) jsonObject.get("header");
...
JSONObject msg1 = (JSONObject) jsonObject.get("body");

To build a JSONArray we use square brackets, check this simple JSON introduction for more details.



来源:https://stackoverflow.com/questions/40522473/json-object-convert-to-string-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!