簡體   English   中英

在 java 中的 JSON 文件中添加新鍵、值並更新鍵的現有值

[英]Add new key,value and update existing value of key in JSON file in java

我的 json 文件包含如下數據: 文件名:“masterData.json”

{
  "Devices":[
    {"DeviceID":"WS1272765443SA",
      "DeviceModel":"model",
      "SerialNumber":"121",
      "Status":"available"
    },
    {
      "DeviceID":"WS1215",
      "DeviceModel":"eCP Tablet",
      "SerialNumber":"122",
      "Status":"available"

    }
  ],
  "Organization":[
    {
      "OrgName":"abc",
      "UserName":"hello",
      "OrgId":"abc",
      "CommunityURL":"",
      "ApiVersionValue":"1.0",
      "OrgCode":"Orgcode11",
      "OrgType":"en",
      "NameSpace":"h",
    }
  ],
  "DeviceModels":[
    {
      "BrandName":"",
      "ModelNameValue":"",
      "Config":""
    },
    {
      "BrandName":"",
      "ModelNameValue":"",
      "Config":""
    }
  ]
}

我需要為我的每個設備添加deviceNumber和值,並將Status可用更新為活動,以便我的“masterData.json”看起來像

{
  "Devices":[
    {
      "DeviceID":"WS1272765443SA",
      "DeviceModel":"model",
      "SerialNumber":"121",
      "Status":**"active"**,
      **"deviceNumber":"123456D"**

    },
    {
      "DeviceID":"WS1215",
      "DeviceModel":"eCP Tablet",
      "SerialNumber":"122",
      "Status":**active**,
      **"deviceNumber":"1234f"**

    }
  ],
  "Organization":[
    {
      "OrgName":"abc",
      "UserName":"hello",
      "OrgId":"abc",
      "CommunityURL":"",
      "ApiVersionValue":"1.0",
      "OrgCode":"Orgcode11",
      "OrgType":"en",
      "NameSpace":"h",
    }
  ],
  "DeviceModels":[
    {
      "BrandName":"",
      "ModelNameValue":"",
      "Config":""
    },
    {
      "BrandName":"",
      "ModelNameValue":"",
      "Config":""
     }
  ]
}

請幫助我使用 java 代碼。

我嘗試使用以下 java 代碼但無法實現。

FileReader reader = new FileReader(utility.getValue("MasterJsonPath"));
JsonObject jsonObj = (JsonObject) parser.parse(reader);
JsonArray deviceListFromJSON = (JsonArray) jsonObj.get("Devices");

for (int i = 0; i < deviceListFromJSON.size(); i++) {

  JsonObject devices = (JsonObject) deviceListFromJSON.get(i);
   ObjectMapper mapper = new ObjectMapper();
   devices.addProperty("device number", "device value");
   deviceListFromJSON.add(devices);
  mapper.writer().writeValue(new File(utility.getValue("MasterJsonPath")),deviceListFromJSON);
}
}

首先,您的第一個 json 代碼格式錯誤(多余的逗號,缺少 {"Devices", .. )。

我試圖糾正它:

{"Devices": [
    {"DeviceID":"WS1272765443SA",
     "DeviceModel":"model",
     "SerialNumber":"121",
     "Status":"available"
    },
    {"DeviceID":"WS1215",
     "DeviceModel":"eCP Tablet",
     "SerialNumber":"122",
     "Status":"available"
 }],
"Organization": [
   {"OrgName":"abc",
    "UserName":"hello",
    "OrgId":"abc",
    "CommunityURL":"",
    "ApiVersionValue":"1.0",
    "OrgCode":"Orgcode11",
    "OrgType":"en",
    "NameSpace":"h"
}],
"DeviceModels":[
   {"BrandName":"",
    "ModelNameValue":"",
    "Config":""
   },
   {"BrandName":"",
    "ModelNameValue":"",
    "Config":""
}]}

對於 java 代碼,嘗試在 for 循環結束時保存文件。 並編寫整個 jsonobject “ jsonObj ”,而不僅僅是deviceListFromJSON 另外,在“ deviceNumber ”和“ Status ”上都使用addProperty 。希望它有幫助:)

    FileReader reader = new FileReader("file.json");
    JsonParser parser = new JsonParser() ;
    JsonObject jsonObj = (JsonObject) parser.parse(reader);
    JsonArray deviceListFromJSON = (JsonArray) jsonObj.get("Devices");
    reader.close();
    for (int i = 0; i < deviceListFromJSON.size(); i++) {
        JsonObject devices = (JsonObject) deviceListFromJSON.get(i);
        devices.addProperty("deviceNumber", "1234f");
        devices.addProperty("Status", "active");
    }   
    BufferedWriter writer = new BufferedWriter(new FileWriter("file.json"));
    writer.write(jsonObj.toString());
    writer.close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM