您的位置:首页 > Web前端 > JavaScript

第三十五天 一桥飞架南北—JSON(一)

2014-07-17 10:03 169 查看
7月17日,高温。“赤日炎炎似火烧,野田禾稻半枯焦。 农夫心内如汤煮,公子王孙把扇摇”。

植物蛋白的转化就是豆腐,关键是点石膏;动物蛋白的转化就是奶酪,关键是发酵。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":"麦家"}]}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: