【问题标题】:Update Json value in json Array in Java在Java中更新json数组中的Json值
【发布时间】:2022-01-04 22:39:46
【问题描述】:
{
  "page": {
    "size": 2,
    "number": 2
  },
  "places": [
    {
      "eventName": "XYZ",
      "createdByUser": "xyz@xyz.com",
      "modifiedDateTime": "2021-03-31T09:59:48.616Z",
      "modifiedByUser": "xyz@xyz.com"
    }   
   ]}

我正在尝试使用新字符串更新“eventName”字段。我尝试使用以下代码,它更新了字段,但只返回了 json 数组中的四个字段。

    public String modifyJson() throws Exception{
    String jsonString =  PiplineJson.payload(PiplineJson.filePath());
    System.out.println(jsonString);
    JSONObject jobject = new JSONObject(jsonString);
    String uu = jobject.getJSONArray("places")
                       .getJSONObject(0)
                       .put("eventName", randomString())
                       .toString();
    System.out.println(uu);
    return uu; 
}

这就是上面代码的作用。

{
  "eventName": "ABCD",
  "createdByUser": "xyz@xyz.com",
  "modifiedDateTime": "2021-03-31T09:59:48.616Z",
  "modifiedByUser": "xyz@xyz.com"
}

一旦更新了 eventName 文件,我将尝试获取完整的 json。

{
  "page": {
    "size": 2,
    "number": 2
  },
  "places": [
    {
      "eventName": "ABCD",
      "createdByUser": "xyz@xyz.com",
      "modifiedDateTime": "2021-03-31T09:59:48.616Z",
      "modifiedByUser": "xyz@xyz.com"
    }   
   ]}

【问题讨论】:

    标签: java json


    【解决方案1】:

    问题在于您将操作链接在一起的方式。问题是您在put 调用的结果上调用toString()put 调用返回调用它的 inner JSONObject。所以你最终序列化了错误的对象。

    改变这个:

    String uu = jobject.getJSONArray("places")
                       .getJSONObject(0)
                       .put("eventName", randomString())
                       .toString();
    

    jobject.getJSONArray("places")
           .getJSONObject(0)
           .put("eventName", randomString());
    String uu = jobject.toString();
    

    应该可以。

    【讨论】:

      【解决方案2】:

      那是因为您要返回从“places”数组中提取的第一个元素。您应该返回“jobject.toString()”。

      【讨论】:

        猜你喜欢
        • 2021-09-03
        • 2022-08-17
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 2017-09-19
        • 2022-10-20
        • 1970-01-01
        • 2017-07-21
        相关资源
        最近更新 更多