小编JLP*_*JLP的帖子

寻找Json-path /(任何API)来更新Java中给定json字符串中的任何值

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)

我不包括这些选项,

  • 创建一个新的JSON字符串.
  • 创建一个JSON对象来处理更改的值并将其转换回jsonstring

原因:我对不同类型的服务有大约500个不同的请求,这些请求返回不同的json结构.所以,我不想总是手动创建新的JSON字符串.因为,ID在json结构中是动态的.

非常感谢任何想法或方向.

使用以下答案更新此问题.

  1. 复制MutableJson.java.
  2. 复制这个小片段并根据需要进行修改.

    private static void updateJsonValue() {
    
    JSONParser parser = new JSONParser();
    JSONObject jsonObject = new …
    Run Code Online (Sandbox Code Playgroud)

java json

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×1

json ×1