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.