android 解析JSON
来源:互联网 发布:linux查找日志技巧 编辑:程序博客网 时间:2024/05/01 22:59
JSON :一种轻量级的数据交换格式。
JSON建构的两种格式:
1:”名称/值 “对的集合
2:值得有序列表(数组)
格式示例如下:
{
"user": [
{
"firstName": "Wang",
"lastName": "Yo",
"email": "44393xxx@qq.com"
},
{
"firstName": "Yang",
"lastName": "Gen",
"email": "256472xxx@qq.com"
}
]
}
解析JSON有多中方式 可以使用JsonReader解析,JSONReader 是android.untl包下的一个用于解析JSON的工具类,最低版要求是API11.
常用方法如下:
//创建JsonReader 对象
JsonReader reader = new JsonReader(new StringReader(jsonData));
//开始解析数组
reader.beginArray();
//循环判断有没有下一个Json对象
while(reader.hasNext()){
//开始解析Json对象
reader.beginObject();
}
//循环判断Json对象里面有没有下一个键值对
while(reader.hasNext()){
String tagName = reader.nextName();
if(tagName.equal("name")){
//name键多对应的值
reader.nextString();
}else if(tagName.equal("age")){
//age键多对应的值
reader.nextString();
}
}
//Json对象的结尾
reader.endObject();
}
//数组解析的结尾
reader.endArray();
示例如下:
1:创建一个json数据该文件存放于 (res/ raw/person.json)
2:创建一个person类,包含上面xml中的属性生成toString方法即可
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void JSON_Click(View view) {
ArrayList<Person> list = JsonReaders();
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
private ArrayList<Person> JsonReaders() {
ArrayList<Person> list = new ArrayList<>();
Reader r = new InputStreamReader(getResources().openRawResource(R.raw.person));
JsonReader jr = new JsonReader(r);
try {
jr.beginObject();// 解析对象
if(jr.hasNext()){
if ("user".equals(jr.nextName())){
jr.beginArray();// 解析数组
while(jr.hasNext()){// 循环判断有没有下一个JSON对象
Person p = new Person();
jr.beginObject();
while (jr.hasNext()){
String name =jr.nextName();
if ("firstName".equals(name)){
p.firstName=jr.nextString();
}else if ("lastName".equals(name)){
p.lastName=jr.nextString();
}else if ("email".equals(name)){
p.email=jr.nextString();
}
}
jr.endObject();// JSON对象的结尾
list.add(p);
}
jr.endArray();// 数组解析的结尾
}
}
jr.endObject();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
运行至模拟器,在控制台即可看到响应的数据,
---------------------------------------------------------------------------------------------------------------------------------
通过对象生成JSON数据
// 生成JSON数据
public void create_JSON(View view) {
ArrayList<Person> list = new ArrayList<>();
Person p1 = new Person();
p1.firstName = "Wang";
p1.lastName = "Yon";
p1.email = "44393xxx@qq.com";
Person p2 = new Person();
p2.firstName = "Yang";
p2.lastName = "Gen";
p2.email = "256472xxx@qq.com";
list.add(p1);
list.add(p2);
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
try {
for (int i = 0; i < list.size(); i++) {
Person p = list.get(i);
JSONObject obj = new JSONObject();
//将对象假如JSONObject中
obj.put("firstName", p.firstName);
obj.put("lastName", p.lastName);
obj.put("email", p.email);
array.put(obj);
}
json.put("person", array);
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println(json.toString() );
}
-------------------------------------------------------------------------------------------------------------------------------
使用GSON解析JSON
谷歌为了方便解析JSON 数据,因此引入了GSON类库,可以吧java对象转化成JSON,也可以吧JSON转换为java对象且使用非常方便。
使用的时候应先导入响应的jar包。
1:json数据如下:
[
{
"firstName": "Wang",
"lastName": "Yo",
"email": "44393xxx@qq.com"
},
{
"firstName": "Yang",
"lastName": "Gen",
"email": "256472xxx@qq.com"
}
]
// 解析代码
{
Gson gson= new Gson();
Reader r = new InputStreamReader(getResources().openRawResource(R.raw.person));
Type type= new TypeToken<ArrayList<Person>>(){}.getType();
ArrayList<Person> list =gson.fromJson(r, type);
for (int i = 0 ; i <list.size();i++){
System.out.println(list.get(i));
}
}
---------------------------------------------------------------------------------------------------------------------------------
通过对象生成JSON数据
ArrayList<Person> list = new ArrayList<>();
Person p1 = new Person();
p1.firstName = "Wang";
p1.lastName = "Yong";
p1.email = "44393xxx@qq.com";
Person p2 = new Person();
p2.firstName = "Yang";
p2.lastName = "Gen";
p2.email = "2564725xxx@qq.com";
list.add(p1);
list.add(p2);
Gson gson= new Gson();
Type type= new TypeToken<ArrayList<Person>>(){}.getType();
String json= gson.toJson(list, type);
System.out.println(json);
}
- 【json】android json解析
- Android-Android解析JSON
- Android数据解析:Json解析
- android---Json数据解析
- Android Json 数据解析
- android 解析JSON
- android 解析json数据格式
- android 解析json数据格式
- Android 解析json数据格式
- android 解析json数据格式
- android 解析json数据格式
- Android的JSON解析
- Android 解析Json
- android JSON 解析
- Android 解析json数据格式
- android解析Json
- Android解析json数据
- Android Json解析
- CSS之Position详解
- 字符设备驱动
- csdn怎么要审核了
- Hadoop RPC框架
- C#之FileInfo的简单操作
- android 解析JSON
- Android 蓝牙开发基本流程
- java 程序执行原理
- PS星云光晕的制作
- SqlServer将数据库中的表复制到另一个数据库
- java在linux系统下开机启动无法使用sudo命令的原因
- silverlight
- 12 Java基础 集合框架
- Android代码内存优化建议-Java官方篇