【问题标题】:Parsing Multiple JSON Arrays in Java/Android在 Java/Android 中解析多个 JSON 数组
【发布时间】:2012-07-31 18:28:19
【问题描述】:

如果您将多个 JSON 数组传递给 Java(在单个流中),如下所示:

[ <-----json objects---->] [ <-----json objects---->]  [ <-----json objects---->] 

你如何在 Java 中解析?有没有办法做到这一点将 JSON 数据重写为单个数组?

本质上,我想在解析后达到这样的程度。

item = json.getString("item");
total = json.getString("total");

items.add(item);
totals.add(total);

一个关键点是第一个数组是项目,第二个数组是总计。 items中的第一个json对象对应totals中的第一个。

【问题讨论】:

  • 单数组是指使用提供的json库并将整个json对象字符串传递给构造函数吗?然后你可以做你想做的,因为它会将它解析成名称值对
  • 您要一次获得整个流吗?
  • 嗯,我的意思是把两个数组包围起来,然后通过在两个单独的数组周围添加“[”“]”来制作一个数组。还有另一个旧的 Stack 问题将其用作答案,但我正在寻找不同的方法。
  • @Francisco Spaeth 是的,它来自 php 编码。

标签: java android arrays json


【解决方案1】:

我会说您首先需要将此内容转换为有效的 JSON,也许您可​​以先将 ]\s*[ 替换为 ],[ 并在开头添加 [ 并在末尾添加 ]。这将是一个有效的 JSON,可以解析为包含许多 JSONArrays 的 JSONArray

类似:

String receivedJSON = "[{},{}] [{},{}] [{}]";
String normalized = "[" + receivedJSON.replaceAll("\\]\\s*\\[", "],[") + "]";
new JSONArray(normalized);

【讨论】:

  • 所以听起来我提出的方法是不可能的。它们都是有效的 JSON 数组,你可以同时解析它们吗?
  • 你能控制 PHP 脚本吗?
  • 我有访问权限;我试着玩了一会儿,实际上也有一个相应的问题(它提出的问题与此不同,尽管更全面地显示了我在大局中所做的事情)。 stackoverflow.com/questions/11744129/…(如您所见,我实际上输出了三个数组,但为简化起见,本示例使用了两个)。
  • 我明白了,您可以考虑采用另一种模型来表示您要做什么。当我需要返回一组项目(如搜索结果)时,我通常使用类似:{ "total":8, "offset":0, "items":[{},{},{},{}]} 这样您就有了请求页面的总数、偏移量和一个对象中的所有项目
  • 好吧,我通过做正确的事情解决了这个问题。我只是将我的 3 个 SQL 查询合并为一个。因此很容易将其编码为 JSON 而无需做任何特别的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
相关资源
最近更新 更多