Inshort:我试图找到一些api,可以通过将第一个参数作为jsonString,第二个参数作为JSONPath来改变值,第三个参数将是该参数的新值.但是,我发现的只是这个.. https://code.google.com/p/json-path/
这个api允许我在JSON String中找到任何值.但是,我找不到简单的方法来更新任何键的值.例如,这是book.json.
{
"store":{
"book":[
{
"category":"reference",
"author":"Nigel Rees",
"title":"Sayings of the Century",
"price":8.95
},
{
"category":"fiction",
"author":"Evelyn Waugh",
"title":"Sword of Honour",
"price":12.99,
"isbn":"0-553-21311-3"
}
],
"bicycle":{
"color":"red",
"price":19.95
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样做可以访问自行车的颜色.
String bicycleColor = JsonPath.read(json, "$.store.bicycle.color");
Run Code Online (Sandbox Code Playgroud)
但我正在寻找JsonPath或其他api中的方法
JsonPath.changeNodeValue(json, "$.store.bicycle.color", "green");
String bicycleColor = JsonPath.read(json, "$.store.bicycle.color");
System.out.println(bicycleColor); // This should print "green" now.
Run Code Online (Sandbox Code Playgroud)
我不包括这些选项,
原因:我对不同类型的服务有大约500个不同的请求,这些请求返回不同的json结构.所以,我不想总是手动创建新的JSON字符串.因为,ID在json结构中是动态的.
非常感谢任何想法或方向.
使用以下答案更新此问题.
复制这个小片段并根据需要进行修改.
private static void updateJsonValue() {
JSONParser parser = new JSONParser();
JSONObject jsonObject = new …Run Code Online (Sandbox Code Playgroud)