您发布的内容不是有效的 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}] }