JSONPath:在转义的 json 字符串中获取以 @ 开头的字段
JSONPath: Get field starting with @ in escaped json string
我想使用 JSONPath 在 json 字符串中获取嵌套字段。
以下面的例子为例 json:
{
"ID": "2ac464eb-352f-4e36-8b9f-950a24bb9586",
"PAYLOAD": "{\"@type\":\"Event\",\"id\":\"baf223c4-4264-415a-8de5-61c9c709c0d2\"}"
}
如果我想提取@type 字段,我希望这样做
$.PAYLOAD.@type
但这似乎不起作用..
也试过这个:
$.PAYLOAD['@type']
我需要使用转义字符还是什么?
您必须修复 json。 PAYLOAD是一个字符串,需要解析。这是 javascript 中的代码,但如果您使用的是另一种语言,我相信您可以想出如何从字符串中解析 json。
var payload={
"ID": "2ac464eb-352f-4e36-8b9f-950a24bb9586",
"PAYLOAD": "{\"@type\":\"Event\",\"id\":\"baf223c4-4264-415a-8de5-61c9c709c0d2\"}"
};
payload.PAYLOAD=JSON.parse(payload.PAYLOAD);
之后你可以使用 json 路径
$.PAYLOAD['@type']
或者只是这个
var tp= payload.PAYLOAD['@type'];
更新
您可以使用 json 路径和正则表达式从字符串中提取,但这只是一个根解决方案,因为创建 json 路径是为了使用 java 脚本对象而不是用字符串。首先解析 属性 更自然也更容易。
发布我的 作为答案
"{\"@type\":\"Event\",\"id\":\"baf223c4-4264-415a-8de5-61c9c709c0d2\"}"
不是JSON,它是一个字符串,包含编码的JSON。
由于 JsonPath 无法解码此类字符串,因此您必须使用您想要的语言来解码字符串。
例如:Decoding JSON String in Java
我想使用 JSONPath 在 json 字符串中获取嵌套字段。
以下面的例子为例 json:
{
"ID": "2ac464eb-352f-4e36-8b9f-950a24bb9586",
"PAYLOAD": "{\"@type\":\"Event\",\"id\":\"baf223c4-4264-415a-8de5-61c9c709c0d2\"}"
}
如果我想提取@type 字段,我希望这样做
$.PAYLOAD.@type
但这似乎不起作用..
也试过这个:
$.PAYLOAD['@type']
我需要使用转义字符还是什么?
您必须修复 json。 PAYLOAD是一个字符串,需要解析。这是 javascript 中的代码,但如果您使用的是另一种语言,我相信您可以想出如何从字符串中解析 json。
var payload={
"ID": "2ac464eb-352f-4e36-8b9f-950a24bb9586",
"PAYLOAD": "{\"@type\":\"Event\",\"id\":\"baf223c4-4264-415a-8de5-61c9c709c0d2\"}"
};
payload.PAYLOAD=JSON.parse(payload.PAYLOAD);
之后你可以使用 json 路径
$.PAYLOAD['@type']
或者只是这个
var tp= payload.PAYLOAD['@type'];
更新
您可以使用 json 路径和正则表达式从字符串中提取,但这只是一个根解决方案,因为创建 json 路径是为了使用 java 脚本对象而不是用字符串。首先解析 属性 更自然也更容易。
发布我的
"{\"@type\":\"Event\",\"id\":\"baf223c4-4264-415a-8de5-61c9c709c0d2\"}"
不是JSON,它是一个字符串,包含编码的JSON。
由于 JsonPath 无法解码此类字符串,因此您必须使用您想要的语言来解码字符串。
例如:Decoding JSON String in Java