【问题标题】:How to Get Value from Json Array mysql如何从 Json 数组 mysql 中获取值
【发布时间】:2021-08-30 06:35:54
【问题描述】:
id value
1 {"customer_name":"John Doe","email":"johndoe@email.com","cart":"[{" product_id":17," description":" Tshirt"," price":50}]", }

我上面有数据

当我使用这个查询时,它总是返回为空

select value->>"$.cart[*].product_id" from orders

SELECT JSON_EXTRACT(value, '$.cart[*].product_id') from orders

如何编写正确的查询以从购物车数组中获取 product_id?

【问题讨论】:

    标签: mysql sql json


    【解决方案1】:

    您发布的内容不是有效的 JSON。我在下面用 1,2,3 标记了问题。

    {...,"cart":"[{" product_id":17," description":" Tshirt"," price":50}]", }
                1                                                         23
    

    对于 1 和 2,您不应将数组放在双引号中。双引号用于字符串。如果您打算 cart 是一个字符串,其内容恰好类似于 JSON 数组,但该字符串中包含双引号字符,这会导致语法混乱。

    对于 3,您不能在 JSON 中的结尾有 ,,后面没有其他字段或元素。

    固定的 JSON 如下所示:

    {"customer_name":"John Doe","email":"johndoe@email.com","cart":[{" product_id":17," description":" Tshirt"," price":50}] }
    

    如果您解决了这些问题,下一个问题是您在某些字段名称中有空格。你应该可以这样做:

    select value->>'$.cart[*].product_id' ...
    

    但你不能,因为字段名称不是"product_id",而是" product_id"(带有前导空格)。

    JSON 确实允许字段名称包含空格。但是如果使用带空格的字段名,则必须这样查询:

    select value->>'$.cart[*]." product_id"' ...
    

    但我建议您修复空格以使其更易于查询。像这样:

    {"customer_name":"John Doe","email":"johndoe@email.com","cart":[{"product_id":17,"description":"Tshirt","price":50}] }
    

    【讨论】:

    • 是的,谢谢,实际上我写问题时购物车上有反斜杠(\“product_id\”),但当我发布问题时没有显示,我需要删除“\”并删除" 外部购物车数组。
    猜你喜欢
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    相关资源
    最近更新 更多