Java中JSON的简单使用与前端解析

http://www.blogjava.net/qileilove/archive/2014/06/13/414694.html

一、JSON

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 JSON采用完全独立于语言的文本格式。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

  JSON与XML的对比(引用自:sanpintian的CSDN博客):

  1、可读性:JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。

  2、可扩展性:XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

  3、编码难度:XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

  4、解码难度:XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。

  5、流行度:XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。

  二、导包

  使用JSON需要导入以下包:

  commons-beanutils.jar

  commons-logging.jar

  commons-lang.jar

  commons-collection.jar

  ezmorph.jar

  json-lib.jar

  三、实现

  Book类的实现:


1  public class Book {

2     private String name;

3     private double price;

4

5     public String getName() {

6         return name;

7     }

8

9     public void setName(String name) {

10         this.name = name;

11     }

12

13     public double getPrice() {

14         return price;

15     }

16

17     public void setPrice(double price) {

18         this.price = price;

19     }

20

21     @Override

22     public String toString() {

23         return name+" "+price;

24     }

25 }


1 /**

2  * @author ZWQ

3  * **/

4 public class JsonTest {

5     public static void main(String[] args) {

6         //***********************************************************************

7         // json基本测试

8         {

9             //新建一个JSON数组

10             JSONArray jsonArray = new JSONArray();

11             //新建一个JSON对象

12             JSONObject json1 = new JSONObject();

13             json1.put("id", "1");

14             json1.put("name", "张三");

15             json1.put("password", "123456");

16             //将JSON对象添加到JSON数组中去

17             jsonArray.add(json1);

18

19             JSONObject json2 = new JSONObject();

20             json2.put("id", "2");

21             json2.put("name", "李四");

22             json2.put("password", "654321");

23             jsonArray.add(json2);

24             System.out.println("json数组基本测试:" + jsonArray);

25

26             //结果:

27             //[{"id":"1","name":"张三","password":"123456"},{"id":"2","name":"李四","password":"654321"}]

28         }

29

30         //***********************************************************************

31         //将对象转成JSON字符串

32         {

33             Book book = new Book();

34             book.setName("Java入门教程");

35             book.setPrice(52.3);

36             //将Java对象转成JSON对象

37             JSONObject jsonObject = JSONObject.fromObject(book);

38             System.out.println("从Object到JSONObject:" + jsonObject.toString());

39

40             //结果:

41             //从Object到JSONObject:{"name":"Java入门教程","price":52.3}

42         }

43

44         //***********************************************************************

45         //将对象集合转成JSON字符串

46         {

47             List<Book> list = new ArrayList<Book>();

48             Book book1 = new Book();

49             book1.setName("高等数学I");

50             book1.setPrice(34.1);

51             Book book2 = new Book();

52             book2.setName("线性代数");

53             book2.setPrice(12.7);

54             list.add(book1);

55             list.add(book2);

56             //将List集合转为JSON数组

57             JSONArray jsonArray= JSONArray.fromObject(list);

58             System.out.println("从Object集合到JSONArray:" + jsonArray.toString());

59

60             //结果:

61             //从Object集合到JSONArray:[{"name":"高等数学I","price":34.1},{"name":"线性代数","price":12.7}]

62         }

63

64         //***********************************************************************

65         // 将JSON字符串转为Java对象

66         {

67             String jsonString = "{name:‘数据结构‘,price:52.3}";

68             JSONObject jsonObject = JSONObject.fromObject(jsonString);

69             //将JSON对象转为Java对象

70             Book book = (Book) JSONObject.toBean(jsonObject, Book.class);

71             System.out.println(book.toString());

72

73             //结果:

74             //数据结构 52.3

75         }

76

77         //***********************************************************************

78         //将JSON字符串转为Java对象数组

79         {

80             // (2).Bean的数组

81             String jsonsString = "[{name:‘数据库基础‘,price:52.3},{name:‘Oracle 11g精华‘,price:42.3}]";

82             JSONArray jsonArray = JSONArray.fromObject(jsonsString);

83             //将JSON数组转为Java对象数组

84             Book[] books = (Book[]) JSONArray.toArray(jsonArray, Book.class);

85             for (Book b : books) {

86                 System.out.println(b.toString());

87             }

88

89             //结果:

90             //数据库基础 52.3

91             //Oracle 11g精华 42.3

92         }

93     }

94 }

  四、前端解析


1 //Jquery提供的获取json的方法

2 //使用前先导入Jquery

3

4 $(‘#button‘).click(function(){

5     //url:请求的地址

6     $.getJSON(‘url‘, {

7         //id是需要传的参数

8         id: 1

9         }, function(data) {//成功后data即为获取的json字符串

10             //例如data:[{"name":"高等数学I","price":34.1},{"name":"线性代数","price":12.7}]

11             alert("第二本书是:"+data[1].name+"  价格是:"+data[1].price);

12         });

13 });

时间: 2024-10-05 19:46:10

Java中JSON的简单使用与前端解析的相关文章

Java中JSON字符串与java对象的互换实例详解(转)

http://www.jb51.net/article/90914.htm 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好,下面先看下JSON的格式, JSON可以有两种格式,一种是对象格式的,另一种是数组对象, {"name":"JSON","address":"北京市西城区"

java中,一个简单但出错率又大的‘加法’题,1+1+&#39;1&#39;+1+1+1+1+&quot;1&quot;=?

1+1+'1'+1+1+1+1+"1"=? 结果是多少?很多人看了题之后,可能会说结果是71.  当然有的童鞋可能会说很简单,放工具里运行一下就知道结果了,如果不运行代码,你会得出一个什么样的结果呢? 如果告诉你答案是551,会迷惑么?怎么会得出551? 下面我们来看看怎么算的: 1.我们大家都知道1 .'1'."1"的区别,1 表示一个int类型,’1'是表示一个char类型,"1" 表示一个字符串类型. 2.1+1+'1'+1+1+1+1+&

多线程(三) java中线程的简单使用

============================================= 原文链接:多线程(三) java中线程的简单使用 转载请注明出处! ============================================= java中,启动线程通常是通过Thread或其子类通过调用start()方法启动. 常见使用线程有两种:实现Runnable接口和继承Thread.而继承Thread亦或使用TimerTask其底层依旧是实现了Runnabel接口.考虑到java的

java中Object.equals()简单用法

/* equals()方法默认的比较两个对象的引用! */ class Child { int num; public Child(int x){ num = x; } //人文的抛出运行时异常的好处是:可以自定义错误信息! /*public boolean equals(Object o) throws ClassCastException{ if(!(o instanceof Child)) throw new ClassCastException("中文提示:类型错误"); Ch

java 中 json的组装

public static void main(String args[]){          //生成一个JSONObject对象          String data = "{}";          JSONObject jsonObj = JSONObject.fromObject(data);                    //1.put 基本类型值          int i=0;          for(i=0; i<5; i++){       

servlet+ajax+json字符串后台传入,前端解析并把数据循环填入表格实例

写在前面:1.源代码来源于博客http://blog.sina.com.cn/u/2904067371 ,在此基础上对于前端代码稍作更改,把传过来的数据解析并传入表格2.json解析,用eval()3.写入表格 table.rows[i].cells[j].innerHTML4.导入java中json应用的jar包(如果没有导入jar包或者包不全就不会有import net.sf.json.JSONArray;import net.sf.json.JSONObject;JSONArray.JSO

Java中有关构造函数的一道笔试题解析

Java中有关构造函数的一道笔试题解析 1.具体题目如下 下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 2.解析说明 (1)class中的构造函数是可以省略的 /** * @Title:User.java * @Package:com.you.user.model * @Descrip

Java中json工具对比分析

Java中几个json工具分析 1, 环境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 2,分析对象 jackson1.8.2 http://jackson.codehaus.org/ gson1.7.1 http://code.google.com/p/google-gson/ jsob_lib2.4 http://json-lib.sourceforge.NET/ 3,使用实例          用两个bean进行测试,两个bean都嵌套有数组和对象,

java使用JSON进行简单的数据封装

在网络数据传输的过程中,常常要使用到数据的交换,json是比较好的一种数据交换格式. 假如要交换的数据有: username:welins password:123 那么,封装的格式应该是这样的: {“username":"welins","password":"123"} 1,发送方应该这样来进行数据的封装 JSONObject json=new JSONObject(); String username="welins&q