Android基础之JSON结构、JSONObject解析,json和jsonobject区别

8
回复
821
查看
[复制链接]

579

主题

1322

帖子

3260

安币

手工艺人

发表于 2018-6-13 09:46:59 | 显示全部楼层 |阅读模式

        JSON初识
一.什么是JSON
二.JSON的两种结构

        同个https://www.json.cn网站可以清除的解析JSON的结构


三.如何解析JSONObject
效果图:点击按钮获取JSON中的数据并使用

        


[Java] 查看源文件 复制代码
 //解析jsonObj对象的方法
 private void parseJsonobj() {
 /* {"name":"张三","age":21,"info":{"class":"三年一班","id":2016001}}*/
  String str="{\"name\":\"张三\",\"age\":21,\"info\":{\"class\":\"三年一班\",\"id\":2016001}}";
  try {
 JSONObject jsonObject2=new JSONObject(str);//创建JSON对象
 JSONObject classjson=  jsonObject2.getJSONObject("info");//获取JSON对象中的JSON
tv_class.setText(classjson.getString("class"));
  tv_id.setText(classjson.getInt("id")+"");
  } catch (JSONException e) {
e.printStackTrace();
  }

 }

完整代码:
[Java] 查看源文件 复制代码
package com.example.a22120.day6_json;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {
 private Button btn_get;
 private TextView tv_name,tv_age ,tv_class,tv_id;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  bindID();
  btn_get.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
 parseJson();
 parseJsonobj();
 /* parseJsonArray();*/
}
  });

 }


 private void bindID() {
  btn_get=findViewById(R.id.getname);
  tv_age=findViewById(R.id.tv_age2);
  tv_name=findViewById(R.id.tv_name2);
  btn_get= findViewById(R.id.getname);
  tv_class=findViewById(R.id.tv_class2);
  tv_id=findViewById(R.id.tv_id2);
 }

 //解析jsonObj对象的方法
 private void parseJsonobj() {
 /* {"name":"张三","age":21,"info":{"class":"三年一班","id":2016001}}*/
  String str="{\"name\":\"张三\",\"age\":21,\"info\":{\"class\":\"三年一班\",\"id\":2016001}}";
  try {
JSONObject jsonObject2=new JSONObject(str);
 JSONObject classjson=  jsonObject2.getJSONObject("info");
tv_class.setText(classjson.getString("class"));
  tv_id.setText(classjson.getInt("id")+"");
  } catch (JSONException e) {
e.printStackTrace();
  }

 }
 //ctrl+r 是替换的快捷键
 //解析JSON的方法
 private void parseJson() {
  String json_srt=" {\"name\":\"张三\",\"age\":21}"; //“\”为转义符
  try {
JSONObject jsonObject=new JSONObject(json_srt);
String name=jsonObject.getString("name");
int age=jsonObject.getInt("age");
tv_name.setText(name);
tv_age.setText(Integer.toString(age)); //或者直接 用  age+""

  } catch (JSONException e) {
e.printStackTrace();
  }
 }


}

UI代码:
[Java] 查看源文件 复制代码



 
 




 
 

 
  
  

 
 
  
  

 

四.如何解析 JSONArray

        使用getJSONObject(index);方法把数组下标为index的 JSONObject提取出来,存入一个新的 JSONObject中。

[Java] 查看源文件 复制代码
JSONObject jsonObject1=jsonArray.getJSONObject(0);//

        


                                               

8

主题

9340

帖子

3547

安币

码皇(巴士元老)

Rank: 8Rank: 8

发表于 2018-6-13 10:02:43 | 显示全部楼层
安卓巴士是个不错的网站,我来顶个贴~

28

主题

1万

帖子

1368

安币

Android大神

小白

Rank: 6Rank: 6

发表于 2018-6-13 11:41:19 | 显示全部楼层
不错不错,楼主辛苦了。。。

503

主题

1192

帖子

2041

安币

手工艺人

发表于 2018-6-13 13:37:45 | 显示全部楼层
感谢分享,安卓巴士有你更精彩:lol

329

主题

993

帖子

722

安币

手工艺人

发表于 2018-6-13 15:09:11 | 显示全部楼层
感谢分享,安卓巴士有你更精彩:lol

308

主题

975

帖子

690

安币

手工艺人

发表于 2018-6-13 17:22:25 | 显示全部楼层
安卓巴士是个不错的网站,我来顶个贴~

6

主题

9571

帖子

2876

安币

Android大神

Rank: 6Rank: 6

发表于 2018-6-13 18:53:59 | 显示全部楼层
感谢分享,楼主V5~

0

主题

149

帖子

8

安币

初级码农

Rank: 1

QQ达人

发表于 2018-10-11 10:52:09 | 显示全部楼层
感谢分享,安卓巴士有你更精彩:)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )