【发布时间】:2011-04-12 00:20:34
【问题描述】:
我在 Android 中的 JSON Parsing 上进行了很多搜索,但不太相信。实际上对 JSON 解析有一个简短的想法,但还不是很清楚。
如何在Application中实现JSON解析?
【问题讨论】:
我在 Android 中的 JSON Parsing 上进行了很多搜索,但不太相信。实际上对 JSON 解析有一个简短的想法,但还不是很清楚。
如何在Application中实现JSON解析?
【问题讨论】:
这是一个非常简单的 JSON 字符串
{"key1":"value1","key2":"value2"}
为了获取它的值,请像这样使用JSONObject:
JSONObject json_obj=new JSONObject(your json string);
String value1=json_obj.getString("key1");
String value2=json_obj.getString("key2");
这是一个稍微复杂的json字符串
[{"key1":"value1","key2":"value2"},{"key1":"value1","key2":"value2"}]
为了从中提取值,请使用JSONArray
JSONArray jArray=new JSONArray(your json string);
for(int i=0;i<(jArray.length());i++)
{
JSONObject json_obj=jArray.getJSONObject(i);
String value1=json_obj.getString("key1");
String value2=json_obj.getString("key2");
}
希望这能有所帮助............
【讨论】:
见:http://developer.android.com/reference/org/json/package-summary.html
首先,您将使用JSONArray 和JSONObject。
简单示例:
try {
JSONObject json = new JSONObject(jsonString);
int someInt = json.getInt("someInt");
String someString = json.getString("someString");
} catch (JSONException e) {
Log.d(TAG, "Failed to load from JSON: " + e.getMessage());
}
【讨论】:
您可以使用 SDK 中捆绑的 org.json 包。
请看这里:http://developer.android.com/reference/org/json/JSONTokener.html
【讨论】:
另一种选择:使用 Jackson。
简单的用法;如果你有一个 POJO 要绑定:
ObjectMapper mapper = new ObjectMapper(); // reusable
MyClass value = mapper.readValue(source, MyClass.class); // source can be String, File, InputStream
// back to JSON:
String jsonString = mapper.writeValue(value);
到地图:
Map<?,?> map = mapper.readValue(source, Map.class);
或树:(类似于默认的 Android org.json 包提供的)
JsonNode treeRoot = mapper.readTree(source);
更多示例请访问http://wiki.fasterxml.com/JacksonInFiveMinutes。
与其他软件包相比的好处是闪电般的速度;非常灵活和通用(POJO、地图/列表、json 树,甚至是流解析器),并且正在积极开发中。
【讨论】: