植物蛋白的转化就是豆腐,关键是点石膏;动物蛋白的转化就是奶酪,关键是发酵。WEB前端的数据流转,玩的就是JSON了。
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称 / 值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
简单的JSON好解决,但没有实用价值,项目要求生成如下复杂的JSON,该怎么办?
{
"data": [
{
"books": [
{
"iD": 1,
"money": 38,
"name": "陆犯焉识"
},
{
"iD": 2,
"money": 25,
"name": "小姨多鹤"
}
],
"id": 1,
"name": "严歌苓"
},
{
"books": [
{
"iD": 1,
"money": 38,
"name": "暗算"
},
{
"iD": 2,
"money": 25,
"name": "风声"
}
],
"id": 1,
"name": "麦家"
}
]
}
Java中几个json工具你可以使用jackson ,gson和Json-lib等。
本文使用Fastjson这一国产神器,号称快得不得了。Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
一、下载fastjson-1.1.41.jar,地址http://repo1.maven.org/maven2/com/alibaba/fastjson/
二、编写Data类
package edu.eurasia.json;
import java.util.ArrayList;
import java.util.List;
public class Data {
private List<Author> data = new ArrayList<Author>();
public List<Author> getData() {
return data;
}
public void setData(List<Author> data) {
this.data = data;
}
}
三、编写Author类
package edu.eurasia.json;
import java.util.ArrayList;
import java.util.List;
public class Author {
private int id;
private String name;
private List<Book> books = new ArrayList<Book>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Book> getBooks() {
return books;
}
public void setBooks(List<Book> books) {
this.books = books;
}
}
四、编写Book类
package edu.eurasia.json;
public class Book {
private int ID;
private String name;
private int money;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
五、编写JSONDemo类
—生成JSON
package edu.eurasia.json;
import com.alibaba.fastjson.JSON;
public class JSONDemo {
public static void main(String[] args) {
Data data = new Data();
Author authorOne = new Author();
authorOne.setId(1);
authorOne.setName("严歌苓");
Book bookOne = new Book();
bookOne.setID(1);
bookOne.setName("陆犯焉识");
bookOne.setMoney(38);
Book bookTwo = new Book();
bookTwo.setID(2);
bookTwo.setName("小姨多鹤");
bookTwo.setMoney(25);
data.getData().add(authorOne);
authorOne.getBooks().add(bookOne);
authorOne.getBooks().add(bookTwo);
Author authorTwo = new Author();
authorTwo.setId(1);
authorTwo.setName("麦家");
Book bookThree = new Book();
bookThree.setID(1);
bookThree.setName("暗算");
bookThree.setMoney(38);
Book bookFour = new Book();
bookFour.setID(2);
bookFour.setName("风声");
bookFour.setMoney(25);
data.getData().add(authorTwo);
authorTwo.getBooks().add(bookThree);
authorTwo.getBooks().add(bookFour);
String jsonString = JSON.toJSONString(data);
System.out.println(jsonString);
}
}
数据对象转换成json字符串的方法都是一样的
String jsonString = JSON.toJSONString(obj);
运行结果:{"data":[{"books":[{"iD":1,"money":38,"name":"陆犯焉识"},{"iD":2,"money":25,"name":"小姨多鹤"}],"id":1,"name":"严歌苓"},{"books":[{"iD":1,"money":38,"name":"暗算"},{"iD":2,"money":25,"name":"风声"}],"id":1,"name":"麦家"}]}