JSON 使用 Android 本机解析 类
JSON parsing using Android native classes
我想使用本机 Android org.json 解析 JSON 文件。
JSON 很复杂,没有预先定义的结构。它可以包含多个键的嵌套级别,而另一个键只包含一个值。我可以用任何类型的结构定义任意数量的键值对。
我需要将其转换为字典。我不能使用任何第三方库,如 Jackson 或 Gson(出于我不想在这里讨论的原因)。我知道使用这些库提供的 public API 可以很容易地完成。
如果我想自己做(也许使用 org.json),最好的方法是什么?我是否需要读取每个值,检查它是 JSONArray/JSONObject 还是一个值,然后执行递归?或者我可以只使用反射读取 JSONObject class 中的地图并使用它吗?
感谢任何帮助。谢谢!
这里有一个片段可以帮助您入门:
Iterator<?> keys = jsonData.keys();
while( keys.hasNext() ){
String key = (String)keys.next();
String value = jsonData.getString(key);
}
您需要检查数据是对象还是数组,方法如下:
if (item instanceof JSONArray)
{
JSONArray jsonArray = (JSONArray) item;
}
else
{
JSONObject jsonObject = (JSONObject) item;
}
然后使用递归解析嵌套对象。
祝你好运!
我想使用本机 Android org.json 解析 JSON 文件。
JSON 很复杂,没有预先定义的结构。它可以包含多个键的嵌套级别,而另一个键只包含一个值。我可以用任何类型的结构定义任意数量的键值对。
我需要将其转换为字典。我不能使用任何第三方库,如 Jackson 或 Gson(出于我不想在这里讨论的原因)。我知道使用这些库提供的 public API 可以很容易地完成。
如果我想自己做(也许使用 org.json),最好的方法是什么?我是否需要读取每个值,检查它是 JSONArray/JSONObject 还是一个值,然后执行递归?或者我可以只使用反射读取 JSONObject class 中的地图并使用它吗?
感谢任何帮助。谢谢!
这里有一个片段可以帮助您入门:
Iterator<?> keys = jsonData.keys();
while( keys.hasNext() ){
String key = (String)keys.next();
String value = jsonData.getString(key);
}
您需要检查数据是对象还是数组,方法如下:
if (item instanceof JSONArray)
{
JSONArray jsonArray = (JSONArray) item;
}
else
{
JSONObject jsonObject = (JSONObject) item;
}
然后使用递归解析嵌套对象。
祝你好运!