【问题标题】:How to handle multiple individual json response?如何处理多个单独的 json 响应?
【发布时间】: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 吗?

标签: javascript java json gson


【解决方案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 数组,然后解析该数组。

【讨论】:

    猜你喜欢
    • 2013-05-10
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2014-09-28
    • 2011-08-10
    相关资源
    最近更新 更多