在Android项目里通过http请求获取json数值非常普遍,记录一下,加强练习
String字符串转换为Json
对于json字符串,json对象,这两个类型,可以直接使用JSONObject的方法进行转换。
String input_string;
JSONObject toJsonObj= new JSONObject(input_string);
JSONObject是安卓里自带的一个方法。但是对于Json数组就不行,需要用JSONArray
String input_string=;
JSONArray toJsonObj= new JSONArray(input_string);
几种从http中获取的常见的json类型:
1.Json字符串. 可以把name当成key,Alice当成值看待。
{ "name":"Alice"}
private void getJsonString() throws JSONException {
JSONObject toJsonObj= new JSONObject(input_string);
String value_name= toJsonObj.get("name").toString();
System.out.println("name为key,它的value是 "+value_name);
}
2.Json对象. name,age,city可以看作是character的值value。 character可以看作是key。如果想要获取name对应的值,必须先要从character中获取对应的值。再从这些值里,获取name对应的值。
{
"character":{ "name":"Alice", "age":18, "gender":"female" }
}
private void toJsonObject() throws JSONException {
JSONObject toJsonObj= new JSONObject(input_string);//将整个string先转换为JSONObject
String value_character= toJsonObj.get("character").toString();//再去character的值
JSONObject character_toJsonObj= new JSONObject(value_character);//再将chara的值转换为JSONObject
String value_age=character_toJsonObj.getString("age").toString(); //在获取age的值
System.out.println("打印:toJsonObj是 "+toJsonObj);
System.out.println("打印:character_toJsonObj是 "+character_toJsonObj);
System.out.println("打印:age为key,它的value是 "+value_age);
}
3.Json数组. 注意“ [ ] ”符号。
{
"name":[ "Alice", "Ben", "Peter" ]
}
private void toJsonArray() throws JSONException {
JSONObject toJsonObj=new JSONObject(input_string);//现将string转换为JsonObj
String value_name= toJsonObj.getString("name");//再去name的值
JSONArray toJsonArray= new JSONArray(value_name);//将name的值看作array来转换
String array_0= toJsonArray.get(0).toString();//获取array的第0个
String array_1= toJsonArray.get(1).toString();//获取array的第1个
String array_2= toJsonArray.get(2).toString();//获取array的第2个
System.out.println("打印:toJsonObj是 "+toJsonObj);
System.out.println("打印:toJsonArray "+toJsonArray);
System.out.println("打印:array_0: "+array_0+" array_1: "+array_1+" array_2:"+array_2);
}
总的来说,看到{ }就把它当作JSONObject先处理,看到[ ]就当作JSONArray来处理,之后再取值,再进行处理。
Android技术生活交流
q群
![]()