什么是JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON官方: http://www.json.org
JSON数据格式的特点:
JSON建构于两种数据结构:
1, “名称/值”对的集合
2, 值得有序列表(数组)
JSON的表示:
使用JsonReader解析JSON数据
JOSNReader是android.util包下的一个用于解析JSON的工具类, 最低版本要求是API11
代码示例:
josntest.json放在raw目录
{
"user": "dadoubi",
"city": [
{
"CityId": 18,
"CityName": "西安",
"ProvinceId": 27,
"CityOrder": 1
},
{
"CityId": 53,
"CityName": "广州",
"ProvinceId": 27,
"CityOrder": 1
}
]
}
Message实体类
package com.lulu.ljsonparser;
/**
* Created by Lulu on 2016/6/17.
*/
public class Message {
String cityId;
String cityName;
String provinceId;
String cityOrder;
public Message(String cityId, String cityName, String provinceId, String cityOrder) {
this.cityId = cityId;
this.cityName = cityName;
this.provinceId = provinceId;
this.cityOrder = cityOrder;
}
@Override
public String toString() {
return "Message{" +
"cityId='" + cityId + '\'' +
", cityName='" + cityName + '\'' +
", provinceId='" + provinceId + '\'' +
", cityOrder='" + cityOrder + '\'' +
'}';
}
}
MainActivity.java
package com.lulu.ljsonparser;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.JsonReader;
import android.view.View;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public List<Message> readJsonTest(InputStream inputStream) {
List<Message> messages = new ArrayList<>();
JsonReader reader = null;
try {
reader = new JsonReader(new InputStreamReader(inputStream, "UTF-8"));
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if ("city".equals(name)) {
reader.beginArray();
while (reader.hasNext()) {
String cityId = null;
String cityName = null;
String provinceId = null;
String cityOrder = null;
reader.beginObject();
while (reader.hasNext()) {
String tem = reader.nextName();
if ("CityId".equals(tem)) {
cityId = reader.nextString();
} else if ("CityName".equals(tem)) {
cityName = reader.nextString();
} else if ("ProvinceId".equals(tem)) {
provinceId = reader.nextString();
} else if ("CityOrder".equals(tem)) {
cityOrder = reader.nextString();
} else {
reader.skipValue();
}
}
reader.endObject();
messages.add(new Message(cityId, cityName, provinceId, cityOrder));
}
reader.endArray();
} else {
reader.skipValue();
}
}
reader.endObject();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return messages;
}
public void parserJson(View view) {
InputStream in = getResources().openRawResource(R.raw.jsontest);
List<Message> messages = new ArrayList<>();
messages = readJsonTest(in);
System.out.println(messages.toString());
for (Message msg :
messages) {
System.out.println(msg.toString());
}
}
}
注: 布局文件没有给出, 只是一个简单的按钮