Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jsonpath解析json字符串?_Json - Fatal编程技术网

如何使用jsonpath解析json字符串?

如何使用jsonpath解析json字符串?,json,Json,我需要使用jsonpath解析示例1中的json,类似于下面的示例2。但找不到路径,因为json的类型是字符串。请建议我一些可能的方法来解析json字符串,以便动态修改colorCode的值 示例1: { "payload": "{\"carBrand\":{\"model\":{\"colourCode\":2147483647}}}" } {phone:{phoneType:"iPhone","cat":"11"}} $.phone.phoneType 示例2: { "

我需要使用jsonpath解析示例1中的json,类似于下面的示例2。但找不到路径,因为json的类型是字符串。请建议我一些可能的方法来解析json字符串,以便动态修改colorCode的值

示例1

{
    "payload": "{\"carBrand\":{\"model\":{\"colourCode\":2147483647}}}"
}
{phone:{phoneType:"iPhone","cat":"11"}}
$.phone.phoneType
示例2

{
    "payload": "{\"carBrand\":{\"model\":{\"colourCode\":2147483647}}}"
}
{phone:{phoneType:"iPhone","cat":"11"}}
$.phone.phoneType
Jsonpath

{
    "payload": "{\"carBrand\":{\"model\":{\"colourCode\":2147483647}}}"
}
{phone:{phoneType:"iPhone","cat":"11"}}
$.phone.phoneType

这将返回“iPhone”

您可以通过JsonPath库自己实现您的目标。以下是一个例子:

String jsonString ="{\"phone\":{\"phoneType\":\"iPhone\",\"cat\":\"11\"}}";
String jsonExp = "$.phone.phoneType";
DocumentContext docCtx = JsonPath.parse(jsonString);
JsonPath jsonPath = JsonPath.compile(jsonExp);
String val1=docCtx.read(jsonPath);
System.out.println(val1); // print iPhone
Maven依赖

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.4.0</version>
</dependency>

com.jayway.jsonpath中没有JsonNode类。我只能看到ValueNode.JsonNode。有什么我要做的吗?@user3879701修改了答案,并在本地进行了测试。它应该对你有用you@user3879701实际上这是一个错误,您不需要JsonNode。您只能使用普通的JsonPath来实现您的用例。我已经更新了代码,如果您遇到任何问题,请告诉我。谢谢