推荐Mars老师的安卓课程,很适合入门学习
JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法。类似 XML。
但是传输数据的时候Json的体积更小。但是Json的可读性相比于xml来说,Json的可读性较差。
json官方网站(www.json.org),但是没有必要把整个网站看一遍,知道这个网站,需要的话可以上去看下,
使用json的时候我们可以使用google的gson,并且这个类库是自依赖的,不依赖其他的类库,安装这一个包就可以使用,可以自行搜索安装
在使用Json的时候,key值必须为String类型,具体为什么只能使用String类型这个大家可以自己百度下,value 的值可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
- 方法一:使用gson进行数据解析代码实战:
下面的代码是手动解析json数组,一般情况下我们不使用这种方法解析数据,可以直接使用方法二
下面的Jsonutil中的解析步骤可以分为
解析数组,解析对象,然后取键值对这三步
public class JSONMain {
public static void main(String[] args) {
String jsonArray =
"[{\"name\":\"lll\",\"age\":24}," +
"{\"name\":\"hello\",\"age\":20}]";
JsonUtil jsonUtil=new JsonUtil();
jsonUtil.parseJsonArray(jsonArray);
/*
输出结果:
name->lll
age->24
name->hello
age->20
*/
}
}
public class JsonUtil {
private static final String TAG = "JsonUtil";
// 下面的步骤可以理解为解析数组,解析对象,然后取键值对这三步
public void parseJsonArray(String jsonData) {
try {
// 首先要生成一个JsonReader对象
JsonReader jsonReader = new JsonReader(new StringReader(jsonData));
// 开始解析数组
jsonReader.beginArray();
while (jsonReader.hasNext()) {
// 开始解析对象
jsonReader.beginObject();
while (jsonReader.hasNext()) {
// 获取标签名称
String tagName = jsonReader.nextName();
if (tagName.equals("name")) {
// 获取value
System.out.println("name->" + jsonReader.nextString());
} else if (tagName.equals("age")) {
// 获取value值
System.out.println("age->" + jsonReader.nextInt());
}
}
// Json对象解析完成
jsonReader.endObject();
}
// Json数组解析完成
jsonReader.endArray();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 方法二: 将jsonArray中的每一个数据对象转换成为java对象
这个转换过程可以分为两步
第一步:根据数据对象的键值创建我们需要的java类
第二部:将jsonArray中的数据转换到java对象中
public class JSONMain {
public static void main(String[] args) {
String jsonArray =
"[{\"name\":\"lll\",\"age\":24}," +
"{\"name\":\"hello\",\"age\":20}]";
Gson gson = new Gson();
Type listType = new TypeToken<LinkedList<User>>() {
}.getType();
LinkedList<User> users = gson.fromJson(jsonArray, listType);
for (User user : users) {
System.out.println(user.getName());
System.out.println(user.getAge());
}
/*
lll
24
hello
20
*/
}
}
// 根据数据类创建java类
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
当我们只解析单个数据对象的时候我们可以使用下面的方法:
public static void main(String[] args) {
String jsonData =
"{\"name\":\"lll\",\"age\":24}";
Gson gson = new Gson();
User user=gson.fromJson(jsonData,User.class);
System.out.println(user.getName()+" "+user.getAge());
}
/*
输出
lll 24
*/