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

         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":"麦家"}]}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值