下面是“Android之解析JSON数据示例”的完整攻略:
一、JSON数据格式简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端间的数据传输。JSON数据格式本质上是一组键值对(即“属性”和“值”),使用大括号 {}
括起来表示一个对象,每个键值对用逗号 ,
隔开,属性名和属性值之间使用冒号 :
隔开。
以下是一个简单的JSON数据示例:
{
"name": "John",
"age": 30,
"isMarried": true,
"hobbies": ["reading", "running", "swimming"]
}
二、Android原生态JSON解析
Android原生态提供了JsonReader和JsonWriter两个类,可以非常方便地进行JSON数据的读写,以下是一个示例代码:
try (JsonReader reader = new JsonReader(new InputStreamReader(inputStream, "UTF-8"))) {
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("result")) {
String result = reader.nextString();
// TODO: 处理result数据
} else if (name.equals("message")) {
String message = reader.nextString();
// TODO: 处理message数据
} else {
reader.skipValue();
}
}
reader.endObject();
} catch (IOException e) {
e.printStackTrace();
}
以上代码使用了Java 7的try-with-resources语法,自动关闭了输入流。首先使用JsonReader的 beginObject()
方法开始解析JSON对象,然后使用 hasNext()
方法判断是否还有键值对可以读取,使用 nextName()
方法获取属性名,再根据属性名判断应该如何解析属性值,使用对应的 nextXxx()
方法获取属性值。
三、使用FastJson解析JSON数据
FastJson是阿里巴巴开源的JSON解析库,提供了比Android原生态更为高效的JSON解析和生成方式。以下是一个示例代码:
String jsonString = "{\n" +
" \"name\": \"John\",\n" +
" \"age\": 30,\n" +
" \"isMarried\": true,\n" +
" \"hobbies\": [\n" +
" \"reading\",\n" +
" \"running\",\n" +
" \"swimming\"\n" +
" ]\n" +
"}";
JSONObject jsonObject = JSON.parseObject(jsonString);
String name = jsonObject.getString("name"); // John
int age = jsonObject.getIntValue("age"); // 30
boolean isMarried = jsonObject.getBooleanValue("isMarried"); // true
JSONArray hobbies = jsonObject.getJSONArray("hobbies"); // ["reading","running","swimming"]
以上代码使用了FastJson的 JSON.parseObject()
方法将一个JSON字符串解析为JSONObject对象,然后使用对应的 XxxValue()
方法获取属性值。
四、使用Gson解析JSON数据
Gson是Google开源的JSON解析库,同样提供了高效的JSON解析和生成方式。以下是一个示例代码:
String jsonString = "{\n" +
" \"name\": \"John\",\n" +
" \"age\": 30,\n" +
" \"isMarried\": true,\n" +
" \"hobbies\": [\n" +
" \"reading\",\n" +
" \"running\",\n" +
" \"swimming\"\n" +
" ]\n" +
"}";
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonString, JsonObject.class);
String name = jsonObject.get("name").getAsString(); // John
int age = jsonObject.get("age").getAsInt(); // 30
boolean isMarried = jsonObject.get("isMarried").getAsBoolean(); // true
JsonArray hobbies = jsonObject.get("hobbies").getAsJsonArray(); // ["reading","running","swimming"]
以上代码使用了Gson的 fromJson()
方法将一个JSON字符串解析为JsonObject对象,然后使用对应的 getXXX()
方法获取属性值。
五、总结
以上是“Android之解析JSON数据示例”的完整攻略,通过本文你应该掌握了Android原生态、FastJson和Gson三种常用的JSON解析方式,能够根据实际需要选择合适的方式进行JSON数据解析。同时也需要注意,JSON数据的内容和格式各不相同,需要根据数据的具体特点进行相应的解析处理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android之解析JSON数据示例(android原生态,FastJson,Gson) - Python技术站