包含属性或值的 json 对象的路径

Posted

技术标签:

【中文标题】包含属性或值的 json 对象的路径【英文标题】:Path to json object which contains an attribute or value 【发布时间】:2021-11-14 07:13:01 【问题描述】:

我有以下 json 数组...

[
 "class":"Identity", "id":5, "type":6 ,
 "class":"Combat", "damage":10.0 ,
.
.
.
]

or

[
 "class":"Combat", "damage":10.0 ,,
 "class":"Identity", "id":5, "type":6 
.
.
.
]

我不知道它的确切路径,因为它不是确定性的。 我试过这个select json_search('one', "Identity") from...,但它只返回$[0].class,它指的是属性的路径,而不是json对象本身的路径......这只是$[0]。这是我想要接收的路径...

使用其他哪些语句,我可以根据其属性或值在数组中找到 json 对象的路径?

【问题讨论】:

【参考方案1】:

我测试过:

mysql> set @j = '...your json example...';

mysql> select substring_index(json_unquote(json_search(@j, 'one', 'Identity')), '.', 1) as obj;
+------+
| obj  |
+------+
| $[1] |
+------+

当您想使用 SQL 表达式搜索 JSON 的特定子字段时,以 JSON 格式存储数据总是比以正常方式存储数据更难。

【讨论】:

非常感谢...比我想象的要容易:D 我希望有一个内置函数可以包含这三个语句... 那么你将如何区分这个 JSON 对象和另一个具有值 'Identity' 但不在 'class' 字段中的 JSON 对象? 这永远不会发生 :) 每个“对象”只是纯数据,不会包含对其他 json 对象的引用......并且每个 json 对象每个数组只存在一次 当它确实发生时记住这个对话。 :-) 我会 :D 以防万一我可以检查属性是否适合...

以上是关于包含属性或值的 json 对象的路径的主要内容,如果未能解决你的问题,请参考以下文章

给定分层路径,获取字段的值

JS reduceRight 导致数组成为对象,我该如何修复逻辑?

RestKit POST 发送 JSON 不包含映射路径/类名

Mysql 返回JSON值属性的函数

HDU 5883 欧拉路径异或值最大 水题

递归获取提升属性树中所有值的完整关键路径