java - 解析 JSON 文件后,如何使用 json-simple 修改 JSON 文件中特定字段的值
问题描述
我需要在我的 json 文件中修改一个键的特定值,它是一个嵌套的 JSON 文件,我已经遍历到该键值对,但我无法修改该值并且不知道如何写回json。
使用 json-simple 解析 JSON
这是 JSON 文件:
{
"entity": {
"id": "ppr20193060018",
"data": {
"relationships": {
"productpresentationtolot": [
{
"id": "",
"relTo": {
"id": "",
"data": {
"attributes": {
"rmsitemid": {
"values": [
{
"source": "internal",
"locale": "en-US",
"value": "2019306"
}
]
}
}
},
"type": "lot"
}
}
]
}
},
"type": "productpresentation"
}
}
使用以下代码读取它:
JSONParser parser = new JSONParser();
reader = new FileReader("path.json");
JSONArray rmsArray =(JSONArray) rmsitemid.get("values");
for(Object obj2:rmsArray)
{
JSONObject tempObj1=(JSONObject)obj2;
System.out.println(tempObj1.get("value"));
}
我可以打印 value(Key) 中的内容,即 2019306,但我不知道如何用其他值替换它,它也应该更改 JSON 文件中的值。
任何帮助表示赞赏!
解决方案
以下是如何使用 simple-json 库进行读写的完整示例:
// read from resource file
JSONObject value;
try (Reader in = new InputStreamReader(getClass().getResourceAsStream("/simple.json"))) {
JSONParser parser = new JSONParser();
value = (JSONObject) parser.parse(in);
}
JSONObject entity = (JSONObject) value.get("entity");
// update id
entity.put("id", "manipulated");
// write to output file
try (Writer out = new FileWriter("output.json")) {
out.write(value.toJSONString());
}
JSONObjects 基本上是地图。所以你可以把值放在里面。
为了再次创建 JSON 字符串,请使用toJSONString()
. 在我的示例中,我创建了一个新的输出文件。不过,您也可以覆盖原始输入文件。但是您必须完全写入文件。
推荐阅读
- mysql - 从数据库中的所有表中删除 X
- javascript - 如何删除 Stripe 的 iframe?
- r - 基于正相关对矩阵中的变量进行子集化以构建复合指标
- session - Onelogin:检查会话是否仍然有效 - OpenID 和 SAML
- uima - Java 代码中使用的 JCas 类型,但未在 XML 类型描述符中声明
- arrays - 如何为每次执行 json 数组循环调用其他功能
- java - 无法找到或加载主类 - 类似的问题解决方案无效
- sql - Hive 跟踪列中的更改
- forms - Typo3:编辑表单插件使用的电子邮件模板
- matlab - 计算极坐标中的旋转差