Json
定义
是轻量级(跟xml比较)的数据交换(客户端和服务器业务数据的传输格式)格式
采用独立于语言的文本格式,很多语言提供了对json的支持
由键值对组成,或括号包围。每个键由引号引起,键和值用冒号分割,多组键值用逗号分隔
是一个Object对象
访问
json是一个对象,key是对象的属性
json的两个常用方法 字符串和对象之间的转化
json有两种存在形式
对象的形式存在,为json对象
字符串的形式存在,为json字符串
客户端服务器数据交换JSON.stringify();把json对象-》json字符串
操作json数据JSON.parse();把json字符串-》json对象
<script type="text/javascript">
// json的定义
var jsonObj = {
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":{
"key5_1" : 5511,
"key5_2" : "key5_2_value"
},
"key6":[{
"key6_1_1":6611,
"key6_1_2":"key6_1_2_value"
},{
"key6_2_1":6621,
"key6_2_2":"key6_2_2_value"
}]
};
// json的访问
// json对象转字符串
var jsonObjString = JSON.stringify(jsonObj);
alert(jsonObjString);//类似toString
alert(jsonObj2.key1); // 12
// json字符串转json对象
var jsonObj2 = JSON.parse(jsonObjString);
</script>
java的json
JavaBean和json的互转()
toJson()结果字符串
和
fromJson()结果对象
@Test
public void test1(){
User user = new User(1,"username1","123456","243903449@qq.com");
Gson gson = new Gson();
String userJsonString = gson.toJson(user); // toJson()将java对象转化为字符串
System.out.println(userJsonString);
User user1 = gson.fromJson(userJsonString, User.class);// 把json字符串转换为java对象
System.out.println(user1);
}
List和json的互转
创建类的对象.getType()
@Test
public void test2() {
List<User> userList = new ArrayList<>();
userList.add(new User(1,"lwt1","12341","111@qq.com"));
userList.add(new User(2,"lwt2","12342","112@qq.com"));
Gson gson = new Gson();
String userListJsonString = gson.toJson(userList); // 把List集合转换为json字符串
System.out.println(userListJsonString);
// 注意:需要创建一个类 继承TypeToken<嵌套List<实体类>>
// List<User> list = gson.fromJson(userListJsonString, new UserListType().getType());
List<User> list = gson.fromJson(userListJsonString,new TypeToken<List<User>>(){}.getType()); // 法二:不用创建UserListType类
System.out.println(list);
System.out.println(list.get(0));
}
类UserListType继承TypeToken<嵌套List<实体类User>>
public class UserListType extends TypeToken<List<User>> {
}
Map和json相互转换
@Test
public void test3(){
Map<Integer,User> userMap = new HashMap<>();
userMap.put(1,new User(1121,"lwt1","123121","123@qq.com"));
userMap.put(2,new User(1122,"lwt2","123122","123@qq.com"));
userMap.put(3,new User(1123,"lwt3","123123","123@qq.com"));
Gson gson = new Gson();
String userMapJsonString = gson.toJson(userMap); // Map集合转换为json字符串
System.out.println(userMapJsonString);
Map<Integer,User> userMap1 = gson.fromJson(userMapJsonString,new UserMapType().getType());
System.out.println(userMap1);
User user = userMap1.get(2);
System.out.println(user);
}
法一:创建类继承TypeToke<嵌套Map<?,?>>
public class UserMapType extends TypeToken<Map<Integer,User>> {
}
法二:通过匿名内部类,不用创建过多的类。
Map<Integer,User> userMap1 = gson.fromJson(userMapJsonString,new TypeToken<Map<Integer, User>>(){}.getType());