如何处理多个单独的 json 响应?

Posted

技术标签:

【中文标题】如何处理多个单独的 json 响应?【英文标题】:How to handle multiple individual json response? 【发布时间】:2022-01-20 04:25:50 【问题描述】:

实际上,我正在做一些测试,其中我从我们的一个端点获得响应,该端点看起来像多个单独的 json 对象,我需要将它们转换为像字符串或单个 json 对象这样的形式,以便我可以执行对他们采取一些行动。

Json 响应示例:-

"user_name":"testUser","email":"test@test.com"
"country":"Australia","Gender":"Male"
"type":"Customer_Account","membership":"Annual"

这里的问题是我无法执行任何操作,直到我将它转换为某个字符串或 Json 对象。

并且无法控制来自某些第三方应用程序的响应。

任何如何使用 javascript 或 Java 转换它的想法都会有很大帮助。

【问题讨论】:

这不是一个有效的 JSON。输出应该是什么样子? 这就是问题在于它不是有效的 json,而是多个单独的有效 json。 那么预期的结果是什么? @Jakson 你能提供那个 API 吗? en.wikipedia.org/wiki/JSON_streaming 可能有用 【参考方案1】:

我认为您的问题出在响应的来源上,这不是有效的 JSON。您可以在此处验证错误:https://jsonlint.com/

您是否实现了 JSON 的源代码?如果是这样,您可以将其设为对象列表...

["user_name":"testUser","email":"test@test.com",
"country":"Australia","Gender":"Male",
"type":"Customer_Account","membership":"Annual"]

如果响应的来源是外部的(不能修改),可以将响应保存为字符串,然后将字符串拆分为列表,迭代生成对象。

希望这有点帮助。

【讨论】:

是的,我尝试将其保存为字符串,但出现解析错误 这个错误会很有帮助:)【参考方案2】:

用逗号将它们连接起来,,并将结果放在括号中[]

[
    "user_name":"testUser","email":"test@test.com",
    "country":"Australia","Gender":"Male",
    "type":"Customer_Account","membership":"Annual"
]

之后可以使用 JSONObject 类或者其他相关的东西

【讨论】:

他应该如何加入? 这里的问题是如何加入? @Jakson 有什么错误?给我们看 当使用它是 JS 时,它显示错误为错误:/script.js:缺少分号。它指向两个json之间缺少逗号 而在 java 中它给出了 json.parser.ParserException Unexpected token at position 18【参考方案3】:

使用正则表达式拆分 JSON 并将其保存在一个数组中:

let text = '"user_name":"testUser","email":"test@test.com""country":"Australia","Gender":"Male""type":"Customer_Account","membership":"Annual"';
const myArray = text.split(/(?=[])/g);

let name = JSON.parse(myArray[0]).user_name;

console.log(myArray[0]);
console.log(name);

现在您可以将字符串解析为 JSON。

【讨论】:

我对此投了反对票。这个答案: 1)忽略了响应是行分隔的 JSON 的事实; 2)它忽略了响应可能具有嵌套对象和数组的可能方式; 3) 永远不要那样使用正则表达式。 1) 我从 OP 帖子中了解到,他得到了该响应并可以将其存储为字符串,稍后想要执行一些操作,但由于它不是 JSON 有效字符串而无法解析。 2)这是真的,我会改进答案。 3)为什么不呢?你能详细说明一下吗?【参考方案4】:

如果您的对象由换行符分隔,您可以逐行读取流,并解析应该是有效 JSON 的每一行。

否则,您可以通过跟踪嵌套大括号的级别来检测对象的结尾( 增加, 减少)。

除了单独解析每个对象,您还可以插入括号和逗号以形成有效的 JSON 数组,然后解析该数组。

【讨论】:

以上是关于如何处理多个单独的 json 响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 JSON 数据的多个链接?

如何处理完全动态的 JSON 响应

如何处理大 JSON 响应

如何处理android中reddit api的深层嵌套json响应?

如何处理具有多个 tsconfig.json 文件的项目?

如何处理反序列化变化的 JSON 数据?