繁体   English   中英

从字符串数组创建Json Array

[英]Create Json Array from array of strings

我正在尝试实现以下json对象:

sid将是所有json对象的标题,如下所示:

   {
  "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"
        }
      ]
    }
  }
}

为了达到上述目的,我尝试使用此代码:

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();
       }


   }

其中“ json”是字符串数组,“ XML”是将添加到json的另一个项目。

我的代码产生的是:

[
  {
    "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]"
  }
]

在这个问题上的任何帮助将不胜感激。

问题之一是,如果您还想打印sid,则应该打印mainObj (而不是jsonArray )。 也是toString方法的调用,即:

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

是多余的。 toString方法在打印期间自动调用,不需要显式调用:

System.out.println(mainObj);

我已使用示例字符串以所需的相同格式创建JSONObject ..希望对您有所帮助

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();
    }

打印输出

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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