android - 将复杂的 JSON 字符串解码为各种对象

标签 android json

我只是想知道是否有人可以推荐比 org.json 更好的替代方法来解码复杂的 JSON 字符串。作为引用,这将从 Web 服务器向下传输到 Android(和 iOS,但这是其他开发人员的问题!)设备,它不必返回。

字符串具有以下性质...

{"header":"value","count":value, ..., "messages":[
    {"messagetype":1,"name":"value"},
    {"messagetype":2,"name":"value","name":value},
    {"messagetype":1,"name":"value"},
    {"messagetype":3,"name":"value","subvalues":["value",value,value]},
    ...
    {"messagetype":4,"name":value,"name":"value","name":value}
]}

基本上,有一些我始终可以依赖的 header 字段,但随后会有一个消息“数组”,计数、内容和顺序可变。

我已经对此进行了几天的研究,并且已经解雇了 GSON 和其他一些人,因为它们要么需要提前知道确切的结构和/或不能很好地处理嵌入式类型(包含的消息) .

this question 中回答三指出我使用 org.json library我知道我可以使用它来解析字符串,但我猜其中一个答案的回复(“那是 super 老派,现实世界中没有人再使用那个库”)让我质疑我的方法。

谁能推荐一个可以更好地处理这个问题的库/方法?如果有人使用替代方法来处理这种复杂多变的结构,我将非常感谢您的意见。

提前致谢。

最佳答案

关于org.json libray的观点我真的不认同: “那是 super 老派,在现实世界中没有人再使用那个库”,因为使用这个库解析 json 非常简单。另外,json到底能复杂到什么地步呢,我的意思是,都是键值对,没有什么是几行代码解决不了的,比如我给你举几个例子,这样你就明白了确信这很容易做到:
假设您收到来自服务器的响应,其中包含您需要格式化为 json 数组的所有信息,那么您可以执行类似这样的操作来解析字符串:

JsonArray arrayJson = new JsonArray(response); 

但是现在你想访问 arrayJson childs:

for (int i = 0; i < arrayJson.length() - 1; i++)
{
  JsonObject json = arrayJson.getJSONObject(i);
}

现在假设您在 for 循环中检索到的那些数组中有另一个 json 数组: 然后你会这样得到它们:

for (int i = 0; i < arrayJson.length() - 1; i++)
{
  JsonObject json = arrayJson.getJSONObject(i);
  JSONArray anotherArray = json.getJSONArray("key");
}

.......,更多的嵌套你可以用同样的方式处理它们,所以我想我的观点成立了。请记住,有时,努力寻找更简单的方法来做事,会使事情变得更难。

关于android - 将复杂的 JSON 字符串解码为各种对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16620825/

相关文章:

Android gradle 构建由 : java. lang.RuntimeException : java. io.IOException 引起:无法读取 list

javascript从rpc获取数据

json - 在 json 文件中导出 neo4j 数据库

c# - 将数据写入本地json文件的简便方法?

android - 单击 EditText View 时如何选择所有文本?

android - 如何在windows xp中安装Android SDK和eclipse?

Android:当acitvity支持横向和纵向时如何设置默认方向

java - 如何在 Android 上使用 SHA-256

php - 将 MySQL 数据转换为 JSON 并包含 MySQL 计数

json - 使用 API 搜索维基百科