JSON是什么
1.JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。
JSON有哪两种数据结构
JSON基础结构:
JSON结构有两种结构:
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。
对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,”javascript”,”vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构
如何解析JSONObject(附案例)
json数据格式解析我自己分为两种;
一种是普通的,一种是带有数组形式的;
普通形式的:
String json_str = "{\"name\":\"张三\",\"age\":21}";
解析:
try {
JSONObject mJsonObject = new JSONObject(json_str);
String name = mJsonObject.getString("name");
int age = mJsonObject.getInt("age");
jsTv.setText(name);
jsTv1.setText(age+"");
} catch (JSONException e) {
e.printStackTrace();
带数组形式的:
[ {“name”:”张三”,”age”:21}, {“name”:”李四”,”age”:22}]
解析:
private void parseJson1() {
String json_str="{\"name\":\"张三\",\"age\":21,\"info\":{\"class\":\"三年一班\",\"id\":2016001}}";
try {
JSONObject jsonObject=new JSONObject(json_str);
String name=jsonObject.getString("name");
int age =jsonObject.getInt("age");
JSONObject classObj =jsonObject.getJSONObject("info");
String className =classObj.getString("class");
int id=classObj.getInt("id");
jsTv.setText(className);
jsTv1.setText(id+"");
} catch (JSONException e) {
e.printStackTrace();
}
如何解析JSONArray(附案例)
SONArray:
1.它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如: [value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为,get()和 opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。
同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。
2.JSONArray,由JSONObject构成的数组,用[{},{},…,{}]来表示
3.如何从字符串jsonString获得JSONArray对象 JSONArray jsonArray = new JSONArray(jsonStr);
4.如何从JSONArray中获得JSONObject对象
JSONArray jsonArray =new JSONArray(json_str);
JSONObject obj1 =jsonArray.getJSONObject(0);
案例:
private void parseJson2() {
// Toast.makeText(this, "1111", Toast.LENGTH_SHORT).show();
String json_str="[ {\"name\":\"张三\",\"age\":21},{\"name\":\"李四\",\"age\":22}]";
try {
JSONArray jsonArray =new JSONArray(json_str);
JSONObject obj1 =jsonArray.getJSONObject(0);
String name =obj1.getString("name");
JSONObject obj2=jsonArray.getJSONObject(0);
int age=obj2.getInt("age");
JSONObject obj3=jsonArray.getJSONObject(1);
String name1=obj3.getString("name");
JSONObject obj4=jsonArray.optJSONObject(1);
int age1=obj4.getInt("age");
jsTv.setText(name);
jsTv1.setText(age+"");
jsTv2.setText(name1);
jsTv3.setText(age1+"");
} catch (JSONException e) {
e.printStackTrace();