[英]Add new key,value and update existing value of key in JSON file in java
My json file contains data as below: filename: "masterData.json"我的 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":""
}
]
}
I need to add deviceNumber
and value for each of my devices and also update the Status
from available to active so that my "masterData.json" would look like我需要为我的每个设备添加
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":""
}
]
}
Kindly help me with the java code.请帮助我使用 java 代码。
i tried with below java code and couldn't achieve.我尝试使用以下 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);
}
}
First of, your fisrt json code is malformed ( extra commas, missing {"Devices", .. ).首先,您的第一个 json 代码格式错误(多余的逗号,缺少 {"Devices", .. )。
I tried to correct it:我试图纠正它:
{"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":""
}]}
For the java Code, try to save the file at the end of the for loop.对于 java 代码,尝试在 for 循环结束时保存文件。 And write the whole jsonobject " jsonObj ", not only the deviceListFromJSON .
并编写整个 jsonobject “ jsonObj ”,而不仅仅是deviceListFromJSON 。 Also, use addProperty on both " deviceNumber " and " Status ".Hope it helps:)
另外,在“ 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.