基本的解析操作
- JsonString解析成为JsonObject
- JsonString解析成为某Bean类的一个实例
- JsonString解析成为JsonArray
- JsonString解析成为一个列表List< T>
- JsonObject、Bean类、JsonArray、List < T>通过toJsonString转化为String
jsonString形式说明
- json包含两种格式:{ } 和 [ ] .
- { } 是jsonObject,例如:
{key:value,key:value}
.可以包含多组key - value. 一个{ } 就对应一个jsonObject实例,或者某个Bean实例 - [ ] 是数组. [ ] 内容应该是同一类型的多个数据. 例如:
[ {key:value,key:value} , {key:value,key:value} ]
, 也 可以是[String,String,String]
. - 关于是否有key.
- { } 的内容一定是key - value对,{ } 的前面一定没有key值. 例如:
key : { }
是不可能的. - [ ] 的内容都不包含key值.因为它是数组,根据序号索引.
[key:value,key:value]
形式是不可能的. 如果 [ ] 在String的最外层,则它没有key.如果 [ ] 没有在jsonString的最外层,那么 [ ] 前面都是有key的.例如:key:[]
- { } 的内容一定是key - value对,{ } 的前面一定没有key值. 例如:
{ } 和 [ ] 的jsonString组合形式
- { } 在最外层
{
key: value,
key: [
String,
String
],
key: value
}
例如:
{
"name": "名字",
"author": [
"张三",
"李四",
"王五"
]
}
- [ ] 在最外层
[
{
key: value,
key: value
},
{
key: value,
key: value
}
]
例如:
[
{
"id": "111",
"message": [
"张三",
"李四",
"王五"
]
},
{
"id": "123",
"message": [
"哈哈哈",
"发送消息",
"微信"
]
},
{
"id": "234",
"message": [
"科技",
"网络"
]
}
]
jsonString解析成为Bean类型.
除了解析成为标准的jsonObject, jsonArray形式之外,常用的还有直接解析成为Bean类型.
规律 : 最外层为[ ] 的采用List< T > parseArray(String text, Class<T> clazz)
,数组中的单个元素抽象出一种类型.最外层为 { } 的采用T parseObject(String text, Class<T> clazz)
解析,{ }整体抽象成为一种类型T
- 举例一,下面是一段最外层为[ ] 的jsonString
[
{
"id": "111",
"message": [
"张三",
"李四",
"王五"
]
},
{
"id": "123",
"message": [
"哈哈哈",
"发送消息",
"微信"
]
}
]
java中定义的Bean类型
public class Message {
private String id;
private List<String> message;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<String> getMessage() {
return message;
}
public void setMessage(List<String> message) {
this.message = message;
}
}
Fastjson解析字符串
String s = "[{\"id\":\"111\",\"message\":[\"张三\",\"李四\",\"王五\"]},
{\"id\":\"123\",\"message\":[\"哈哈哈\",\"发送消息\",\"微信\"]}]";
List<Message> messageList = JSON.parseArray(s,Message.class);
String id = messageList.get(0).getId();
List<String> message = messageList.get(0).getMessage();
- 举例二. 下面是一段最外层为{ } 的jsonString字符串
{
"name": "名字",
"author": [
"张三",
"李四",
"王五"
]
}
Java中的Bean类
public class Author {
private String name;
private List<String> author;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getAuthor() {
return author;
}
public void setAuthor(List<String> author) {
this.author = author;
}
}
Fastjson解析jsonString
String ss = "{\"name\":\"名字\",\"author\":[\"张三\",\"李四\",\"王五\"]}";
Author author = JSON.parseObject(ss,Author.class);
String name = author.getName();
List<String> authorList = author.getAuthor();