Fastjson解析Json

基本的解析操作

  • 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:[]

{ } 和 [ ] 的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();

猜你喜欢

转载自blog.csdn.net/followyouself/article/details/80820338
今日推荐