首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jayway库-从JSONPath读取JSON

jayway库-从JSONPath读取JSON
EN

Stack Overflow用户
提问于 2022-09-28 21:44:18
回答 2查看 100关注 0票数 1

我使用的是jayway库,因为我必须使用JSONPath表达式。

代码语言:javascript
运行
复制
{
"fruit":"Apple",
"size":"Large",
"price":"40"
}

上面是我的json,现在从这个JSON开始,假设我想从一个特定的路径中阅读。对于Ex:- $.fruit,所以代码片段将类似于假设我已经读取了json文件,并且在将它转换为string后存储在这里。

代码语言:javascript
运行
复制
String sb ="input json";
DocumentContext context = JsonPath.parse(sb);
Object rawData = context.read(path);

考虑到这将给我字符串,因为它是明确的路径。我会让"Apple"存储在"sb"

现在,如果我想将这个字符串值添加到一个不同的JSON中,它将只包含这个元素,该怎么办?使用jayway库类。

代码语言:javascript
运行
复制
    {
      "fruit":"Apple"
    }

我尝试了elements.

  • Also方法添加
  1. ,但是它会给我提供所有尝试过的context.remove方法,但是为此,我必须专门提供剩下的路径。(如果有任何否定的条件,比如context.remove(!"$.fruit"),它将从水果中删除每个元素aprat ),我想我仍然可以实现,但也找不到。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-29 01:47:12

简短的回答:在新的上下文中使用context.put,而不是context.set

详细信息:

如果您想要创建一个包含{"fruit":"Apple"}的新JSON对象,您可以选择起点并按如下方式扩展它:

代码语言:javascript
运行
复制
String sb = " { \"fruit\":\"Apple\", \"size\":\"Large\", \"price\":\"40\" }";
DocumentContext context = JsonPath.parse(sb);
String key = "fruit";
Object rawData = context.read("$." + key);
        
// create a new context containing an empty JSON object:
DocumentContext context2 = JsonPath.parse("{}");
// add your JSON to the root of the object:
context2.put("$", key, rawData);
// print the result:
System.out.println(context2.jsonString());

这将产生以下结果:

代码语言:javascript
运行
复制
{"fruit":"Apple"}

我不知道有一个路径运算符,它的意思是“所有东西,除了”你想要保留的东西。如果您想这样做,也许您必须迭代原始的JSON并删除不等于要保存的数据的每个对象。

票数 1
EN

Stack Overflow用户

发布于 2022-09-29 02:15:35

您可以考虑另一个库Josson,以获得更简单的语法。

https://github.com/octomix/josson

代码语言:javascript
运行
复制
Josson josson = Josson.fromJsonString("{\"fruit\":\"Apple\", \"size\":\"Large\", \"price\":\"40\"}");
JsonNode node = josson.getNode("map(fruit)");
System.out.println(node.toPrettyString());

输出

代码语言:javascript
运行
复制
{
  "fruit" : "Apple"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73888132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档