public class Myjson {
public static String json1="{\"name\":\"ERIC\",\"age\":\"10\"}";
public static String json2="[\"AAA\",\"BBB\",\"CCC\"]";
public static String json3="[" +
"{\"name\":\"aaa\",\"age\":\"10\"},"+
"{\"name\":\"bbb\",\"age\":\"20\"},"+
"{\"name\":\"ccc\",\"age\":\"30\"}"+"]";
public static String json4="{"+"\"people\":"+"["+
"{\"name\":\"a\",\"age\":\"1\"},"+
"{\"name\":\"b\",\"age\":\"2\"},"+
"{\"name\":\"c\",\"age\":\"3\"}"+"]"+"}";
//json数据的格式真的好坑。。。。
}
第一个json1是单纯的一个json对象,其中都是用key——value的方式存储的
第二个是一个数组
第三个是一个json对象的数组,就是数组里面的元素是一个一个json对象
第四个是一个json对象,people这个key对应的value值是一个数组。而这个数组里面的元素是一个一个json对象,
里面又有两个键值对,name和age。
下面看解析
要注意的是:无论什么时候,你要写解析json数据的代码的时候,首先要知道你将要解析的json数据是什么格式。
上解析:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// json1();
// json2();
// json3();
// json4();
}
public void json1(){
try {
// new一个JSONObect对象
JSONObject object=new JSONObject(Myjson.json1);
String name=object.getString("name");
int age=object.getInt("age");
Log.i("json", name+age);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void json2(){
try {
//数组是用JSONArray来接
JSONArray array=new JSONArray(Myjson.json2);
// 通过下标来取数据
for(int i=0;i<array.length();i++)
{
String name=array.getString(i);
Log.i("json", name);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void json3(){
try {
JSONArray array=new JSONArray(Myjson.json3);
for(int i=0;i<array.length();i++){
JSONObject object=array.getJSONObject(i);
String name =object.getString("name");
int age=object.getInt("age");
Log.d("json", name+" "+age);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void json4(){
try {
JSONObject object=new JSONObject(Myjson.json4);
JSONArray array=object.getJSONArray("people");
for (int i = 0; i < array.length(); i++) {
JSONObject ob=array.getJSONObject(i);
String name=ob.getString("name");
int age=ob.getInt("age");
Log.d("json", name+" "+age);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
其实就是在用第一个和第二个解析方法来回嵌套,看看代码就可以了。