简体   繁体   中英

Create Json Array from array of strings

I am trying to achieve the following json object:

where sid will be the title for all the json object as displayed below:

   {
  "sid": {
    "1662809241632798": {
      "JSON": [
        {
          "path": "root/AuthenticationUnixTime",
          "val1": "1521560221877",
          "val2": "null",
          "comp": "false"
        },
        {
          "path": "root/ClientDate",
          "val1": "1521560221877",
          "val2": "1519818708657",
          "comp": "false"
        },
        {
          "path": "root/ContentSize",
          "val1": "18064",
          "val2": "18029",
          "comp": "false"
        }
      ],
      "XML": [
        {
          "path": "root / recording / procIp",
          "val1": "172.22.6.26",
          "val2": "null",
          "comp": "false"
        },
        {
          "path": "root / recording / procIp",
          "val1": "172.22.6.26",
          "val2": "null",
          "comp": "false"
        },
        {
          "path": "root / recording / messagesSize",
          "val1": "13529",
          "val2": "11982",
          "comp": "false"
        }
      ]
    }
  }
}

I have tried to use this code in order to achieve what I tried to get above:

public void newMethod(){

       JSONArray jsonArray = new JSONArray();
       json=removeNullFromArrayString(json);
       JSONObject mainObj = new JSONObject();
       mainObj.put("SID",sid);
       try{
           for(int i=0;i<json.length;i++){
               JSONObject list = new JSONObject();
               list.put("JSON",json[i]);

               jsonArray.add(list);
           }

            System.out.println(jsonArray.toString());


       }catch (JSONException e1) {
           // TODO Auto-generated catch block
           e1.printStackTrace();
       }


   }

where "json" is array of strings, and "XML" is another item which will be add to json.

what my code produced is:

[
  {
    "JSON": "[path: root / AuthenticationUnixTime, val1: 1521560221877, val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / ClientDate, val1: 1521560221877, val2: 1519818708657, comp: false]"
  },
  {
    "JSON": "[path: root / ClientDateTime, val1: 0, val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / ClientRecordingDateTimeUtc, val1: \"2018-03-20 15:37:01.877\", val2: \"2018-03-20 15:37:03.351\", comp: false]"
  },
  {
    "JSON": "[path: root / ClientRecordingDateTimeZone, val1: \"2018-03-20 10:37:01.877\", val2: \"2018-03-20 09:37:03.351\", comp: false]"
  },
  {
    "JSON": "[path: root / ContentSize, val1: 18064, val2: 18029, comp: false]"
  },
  {
    "JSON": "[path: root / CreateDate, val1: \"2018-03-20T15:37:01.877\", val2: \"2018-03-20T15:37:07.301\", comp: false]"
  },
  {
    "JSON": "[path: root / Description, val1: \"\", val2: \"Corrupt end\", comp: false]"
  },
  {
    "JSON": "[path: root / ErrorCount, val1: 0, val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / FetchURL, val1: \"\", val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / FullRecordingData, val1: \"\", val2: [], comp: false]"
  },
  {
    "JSON": "[path: root / Location, val1: \"https://protection.asurion.com/walmart/en-us/?cid=vn-wmt%3acareplan%2fct%3denable\", val2: \"https://protection.asurion.com/walmart/en-us/?cid=vn-wmt:careplan/ct=enable\", comp: false]"
  },
  {
    "JSON": "[path: root / MaxScrollPercent, val1: 35, val2: 34, comp: false]"
  },
  {
    "JSON": "[path: root / MessagesSize, val1: 0, val2: 7345, comp: false]"
  },
  {
    "JSON": "[path: root / OrientationChangeCount, val1: 0, val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / OriginalSID, val1: 0, val2: 1662809241632798, comp: false]"
  },
  {
    "JSON": "[path: root / ProcessingDateTimeUtc, val1: \"2018-03-20 15:34:14.606\", val2: \"2018-03-20 15:35:31.434\", comp: false]"
  },
  {
    "JSON": "[path: root / ProcessingDateTimeZone, val1: \"2018-03-20 10:34:14.606\", val2: \"2018-03-20 15:35:31.434\", comp: false]"
  },
  {
    "JSON": "[path: root / RecordingDate, val1: 1521560221877, val2: 1521560220062, comp: false]"
  },
  {
    "JSON": "[path: root / RecordingGUID, val1: \"ec23ffc4-b63f-4043-9982-9b9a6b4fc0e5\", val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / RecordingDateJs, val1: 1521560221877, val2: 1521560223, comp: false]"
  },
  {
    "JSON": "[path: root / RecordingEndDate, val1: 1521560239584, val2: 1521577930, comp: false]"
  },
  {
    "JSON": "[path: root / Referrer, val1: null, val2: \"\", comp: false]"
  },
  {
    "JSON": "[path: root / Source, val1: \"Direct\", val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / TimeExitPause, val1: 200, val2: 0, comp: false]"
  },
  {
    "JSON": "[path: root / TimeToFirstClick, val1: null, val2: 0, comp: false]"
  },
  {
    "JSON": "[path: root / TimeUnload, val1: null, val2: 0, comp: false]"
  },
  {
    "JSON": "[path: root / WebPageHash, val1: \"+o1R2R7XvZD7H/JVBz50Y/tsWRQ=\", val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / XMLSize, val1: 4160, val2: 4006, comp: false]"
  },
  {
    "JSON": "[path: root / DSRSize, val1: 5486, val2: 396, comp: false]"
  },
  {
    "JSON": "[path: root / HTMLSize, val1: 18064, val2: 18029, comp: false]"
  },
  {
    "JSON": "[path: root / MachineName, val1: \"WIN-D1NE1J4RB6A\", val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / IpAddress, val1: \"172.22.6.26\", val2: null, comp: false]"
  },
  {
    "JSON": "[path: root / ProcessVersion, val1: \"1.0.1.115\", val2: null, comp: false]"
  }
]

any help on this issue will be appreciated.

One of the problems is that you should print the mainObj (instead of the jsonArray ) if you want to also print the sid. Also the call of the toString method ie :

System.out.println(mainObj.toString());

is redundant. The toString method is automatically called during print and does not need to be called explicitly :

System.out.println(mainObj);

I've used the sample string to create the JSONObject with the same format that you want .. hope this helps

String jsonString = "[path: root / ClientDate, val1: 1521560221877,val2:1519818708657, comp: false],[path: root / ClientDate, val1: 1521560221877,val2:1519818708657, comp: false]";
    JSONObject mainObj = new JSONObject();
    JSONObject child = new JSONObject();
    JSONObject list;
    JSONObject objectId;

    try {
        String[] json1 = jsonString.split("(?=(,\\[))(,\\[)");
        for (String string : json1) {
            string = string.replaceAll("[\\[\\]]", "");
            String[] json = string.split(",");
            list = new JSONObject();
            for (int i = 0; i < json.length; i++) {
                String[] object = json[i].split(":");
                list.put(object[0], object[1]);
            }

            child.append("JSON", list);

        }
        objectId = new JSONObject();
        objectId.put("123456798", child);
        mainObj.put("SID", objectId);
        System.out.println(mainObj);
    } catch (JSONException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

Printed output

{"SID":{"123456798":{"JSON":[{"path":" root / ClientDate","val2":"1519818708657"," val1":" 1521560221877"," comp":" false"},{"path":" root / ClientDate","val2":"1519818708657"," val1":" 1521560221877"," comp":" false"}]}}}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM