一、概念
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。 同时也易于机器解析和生成。 它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON 采用完全独立于语言的文本格式, 但是也使用了类似于 C 语言家族的习惯(包括 C, C++, C#, Java,JavaScript, Perl, Python 等) 。 这些特性使 JSON 成为理想的数据交换语言。
二、定义对象和基本使用
2.1 定义格式
<script type="text/javascript" >
var jsons = {
"key1":"value1", //字符串类型
"key2":123, //number
"key3":["12",12,3],//数组
"key4":{ //json类型
"key4_1":"value1",
"key4_2":123,
},
"key5":[ //json数组
{"key5_1_1":"value1"},
{"key5_2_1":"value2"}],
}
</script>
2.2 对象的访问
访问json对象的属性时,使用【对象名.属性名】访问
<script type="text/javascript" >
var jsons = {
"key1":"value1", //字符串类型
"key2":123, //number
"key3":["12",12,3],//数组
"key4":{ //json类型
"key4_1":"value1",
"key4_2":123,
},
"key5":[ //json数组
{"key5_1_1":"value1"},
{"key5_2_1":"value2"}],
}
alert(jsons.key1);
alert(jsons.key3[1]);
alert(jsons.key4.key4_1);
alert(jsons.key5[0].key5_1_1);
</script>
三、json的两个常用方法
var json = {
"key1":"value1", //字符串类型
"key2":123, //number
}
alert("原始json:"+json);
var str=JSON.stringify(json);
alert("对象转为字符串:"+str);
var obj = JSON.parse(str);
alert("字符串转对象:"+obj);
四、JSON在Java中的使用
我们要使用 json 和 java 中使用,我们需要使用到一个第三方的包。它就是 gson.jar。
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
JSON字符串和对象的转换
/*
对象转为JSON字符串
*/
// json 操作, 一定要先 new 一个 gson 对象。
Gson gson = new Gson();
// java 对象--json
Person person = new Person(12, "wzg168");
// 把对象转成为 json 字符串
String personjson = gson.toJson(person);
/*
JSON字符串转为对象
*/
// 把 json 字符串转换成为 java 对象
Person p = gson.fromJson(personjson, Person.class);
System.out.println(p);
list集合和JSON数组的转换
// 要把复杂的 json 字符串转换成为 java 对象。 需要继承 TypeToken 类。
// 并把返回的类型当成 TypeToken 的泛型注入
static class PersonType extends TypeToken<List<Person>> {
}
List<Person> list = new ArrayList<Person>();
for (int i = 0; i < 3; i++) {
list.add(new Person(10 * i, "name-" + i));
}
String jsonListString = gson.toJson(list);
// 把 json 数组转换成为 List 对象
// List<Person> ps = gson.fromJson(jsonListString, new PersonType().getType());
// 我们也可以使用匿名内部类
List<Person> ps = gson.fromJson(jsonListString, new TypeToken<List<Person>>() {}.getType());
Map和JSON的转换
// map 对象和 json 的转换
Map<String, Person> mapPerson = new HashMap<String, GsonTest.Person>();
// 添加 person 到 map 中
mapPerson.put("p1", new Person(1, "person-1"));
mapPerson.put("p2", new Person(2, "person-2"));
// 把 map 转换成为 json 对象
String jsonMapString = gson.toJson(mapPerson);
System.out.println(jsonMapString);
// 通过使用匿名内部类的方式
Map<String, Person> map = gson.fromJson(jsonMapString,new TypeToken<HashMap<String, Person>>() {}.getType());