【问题标题】:Android : how to get jsonarray from json object in different waysAndroid:如何以不同的方式从 json 对象中获取 jsonarray
【发布时间】:2012-11-09 07:13:23
【问题描述】:

我知道如何从jsonobject 获取jsonarray。我正在做下面的代码来获取 jsonarray。

JSONObject recvJson = new JSONObject(holder.toString());   
String numberByte= (String) recvJson.get("data");
String ts = (String) recvJson.get("time");
JSONObject temp2 = new JSONObject("{ \"data\" : " + numberByte+ "}");
JSONArray recvJarray = temp2.getJSONArray("data"); 

for (int i = 0; i < recvJarray.length(); i++) 
{
byteArray[i] = (byte) recvJarray.getInt(i); 
}

但不想使用for-loop,不使用for-loop任何其他循环检索jsonarray数据值 .

我该怎么办??我已经完成了谷歌并看到了许多论坛,但是在不使用 for 循环的情况下成功地检索了数据。

例如: I ll be getting 80 - 100 packets of 1024bytes per second from server, I want to retrieve this data &amp; store it into bytearray。通过使用 for-loop 大约需要 300 毫秒到 400 毫秒,而我在这之间丢失了许多数据包。所以我想使用不同的方法。如果有任何想法或解决方案来解决这个问题。

我们将不胜感激!

【问题讨论】:

  • jsonArray 是数组。因此,如果您想从数组中获取值,则必须遍历数组。如果你不喜欢for 操作符,你可以使用while 构造。
  • 从循环中检索数据数组需要一些时间。没有循环的任何其他使用方式。

标签: android json for-loop


【解决方案1】:

您可以使用 GSON 来解析 json 对象。解码 json 数据更快更容易。 检查这些链接。 Gson1, Gson2

【讨论】:

    【解决方案2】:

    尝试使用gson

    它使用java反射通过简单的方法将对象转换为json和json到对象

    toJson(),fromJson()(它也适用于对象数组和列表)

    但您必须为 json 编写正确的类(包含所有字段)

    阅读文档。

    【讨论】:

    • 我不确定。 gson 可能会隐式使用循环。但这样你就不必使用任何循环。您只需一个方法调用即可获取 list 。但是 json 数组...可能您可以通过递归来实现。但我不推荐
    • 我不能使用递归。我认为它会花费更多时间然后循环。我每秒将收到 80 - 100 个 1024 字节的数据包。
    猜你喜欢
    • 2018-05-11
    • 1970-01-01
    • 2017-03-09
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多