我有一个JSON数组,其中有一组对象,都是相同的键,但其中一些键包含序列化的JSON,而不是实际的JSON.就像这样.

[
  {
    "a": 1,
    "b": "{\"c\":2}"
  },
]

我想用它们的解析形式替换所有b的内容.

[
  {
    "a": 1,
    "b": { "c": 2 }
  },
]

我如何才能做到这一点,最好是用JQ?

推荐答案

使用fromjson,并使用.[].b |=更新有问题的字段.

.[].b |= fromjson

Demo

如果您想要解码所有JSON编码的字符串,而不知道哪些是JSON编码的字符串,您可以使用fromjson进行try,如果失败,则求助于原始输入..try可以缩写为?:

.[][] |= (fromjson? // .)

Demo

两种输出均为:

[
  {
    "a": 1,
    "b": {
      "c": 2
    }
  }
]

Json相关问答推荐

使用Jolt变换转换JsonArray以将关键字转移到内部JsonArray中

无法从JSON解析ZonedDateTime,但可以使用格式化程序很好地解析

如何在Android中解析带有动态键和可变对象名称的改装JSON响应?

使用 jq 从字符串列表开始创建对象

使用 jq 工具将文本从 txt 文件转换为 json

golang递归json来构造?

JOLT JSON 将值从一对多转换为一对一

通过sql查询读取嵌套Json

Jolt - 在同一级别添加时组合值的问题

C# 合并 2 个几乎相同的 JSON 对象

从 JSON 对象中删除键值对

如何判断字符串是否为json格式

如何使用 CORS 实现 JavaScript Google Places API 请求

将带有数据和文件的 JSON 发布到 Web Api - jQuery / MVC

在 JSON 编码的 HTML5 数据属性中转义/编码单引号

在 Android 中使用带有 post 参数的 HttpClient 和 HttpPost

使用 application/json 优于 text/plain 的优势?

使用 Codable 序列化为 JSON 时的 Swift 字符串转义

Python 到 JSON 序列化在十进制上失败

有没有一种快速的方法可以在文本编辑器中将 JavaScript 对象转换为有效的 JSON?