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