您的位置:首页 > 编程语言 > Java开发

JSON总结- JSON与JAVA的数据转换实例

2015-07-28 22:20 537 查看
转载自:http://iteye.blog.163.com/blog/static/1863080962012102124833914/

摘要:在异步应用程序中发送和接收信息时,可以选择以纯文本和
XML 作为数据格式。掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScript Object Notation(JSON),以及如何使用它更轻松地在应用程序中移动数据和对象。


一、JSON介绍

JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

JSON的规则很简单: 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

官网:http://www.json.org/

JSON是AJAX中的X(就是可以取代XML); ------出自JSON创始人;

JSON有两种数据结构:

(1)Map,也称为对象;{'key1':'value1','key2':'value2'}

(2)Array;['arr1','arr2','arr3'];

也就是说所有的JSON对象都是要以这些形式表示;


二、JSON简单的例子

如果我们想要使用JSON包,则可以下载JSON包的源代码,并将这些代码添加进Eclipse工程中,即可调用;

如果想要看API文档,可以参见:http://www.JSON.org/java/index.html

JSON包中最常用的两个类就是JSONObject和JSONArray,分别表示两种数据结构;


1.JSONObject代码实例



import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class Test {

public static void main(String[] args) throws Exception{

JSONObject jsonobj = new JSONObject("{'name':'xiazdong','age':20}");

String name = jsonobj.getString("name");

int age = jsonobj.getInt("age");

System.out.println(name+":"+age);

}

}


2.JSONArray代码实例

JSONArray array = new JSONArray(String str); //将String转为JSONArray
int length = array.length();//返回Array的长度;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class Test {

public static void main(String[] args) throws Exception{

JSONArray jsonarray = new JSONArray("[{'name':'xiazdong','age':20},{'name':'xzdong','age':15}]");

for(int i=0;i<jsonarray.length();i++){

String name = jsonarray.getJSONObject(i).getString("name");

int age = jsonarray.getJSONObject(i).getInt("age");

System.out.println("name="+name);

System.out.println("age="+age);

}

}

}


3.嵌套JSONObject和JSONArray代码实例

public class Test {

public static void main(String[] args) throws Exception{

String str = "{'name':'xiazdong','age':20,'book':['book1','book2']";

JSONObject obj = new JSONObject(str);

System.out.println(obj.getJSONArray("book").getString(0));

}

}


4.JSONStringer代码示例

JSONStringer可以用来快速构建一个JSON格式的文本,并转换成String,可以写入文件;

JSONStringer是JSONWriter的子类;

JSONStringer一般通过object().key().value().key().value().endObject()进行构造;

object()表明开始一个对象,即添加{ ;

endObject()表明结束一个对象,即添加 } ;

array()表明开始一个数组,即添加一个 [ ;

endArray()表明结束一个数组,即添加一个 ] ;

key()表示添加一个key;

value()表示添加一个value;

public class JsonStringerDemo {

public static void main(String[] args) throws Exception{

JSONStringer stringer = new JSONStringer();

String str = stringer.object().key("name").value("xiazdong").key("age").value(20).endObject().toString();

System.out.println(str);

}

}




复杂JSON格式写入

public class JsonStringerDemo {

public static void main(String[] args) throws Exception{

JSONStringer js = new JSONStringer();

JSONObject obj2 = new JSONObject();

JSONObject obj3 = new JSONObject();

JSONObject obj4 = new JSONObject();

obj4.put("title", "book1").put("price", "$11");

obj3.put("book", obj4);

obj3.put("author", new JSONObject().put("name", "author-1"));

JSONObject obj5 = new JSONObject();

JSONObject obj6 = new JSONObject();

obj6.put("title", "book2").put("price", "$22");

obj5.put("book", obj6);

obj5.put("author", new JSONObject().put("name", "author-2"));

JSONArray obj7 = new JSONArray();

obj7.put(obj3).put(obj5);

obj2.put("title","BOOK");

obj2.put("signing", obj7);

js.object().key("session").value(obj2).endObject();

System.out.println(js.toString());

PrintWriter out = new PrintWriter(new FileOutputStream(1.txt));

out.println(js.toString());

}

}




以上代码生成了如下JSON格式:

{"section":{

"title":"BOOK",

"signing":[

{

"author":

{

"name":"author-1"

},

"book":

{

"title":"book1",

"price":"$11"

}

},

{

"author":

{

"name":"author-2"

},

"book":

{

"title":"book2",

"price":"$22"

}

}

]}

}

}




5.JSONTokener代码示例

JSONTokener是用来读取JSON格式的文件;

JSONObject obj = new JSONObject( new JSONTokener(java.io.Reader));可以从文件中读取一个JSONObject;

JSONArray obj = new JSONArray( new JSONTokener(java.io.Reader)); 可以从文件中读取一个JSONArray;

public class JsonStringerDemo {

public static void main(String[] args) throws Exception{

JSONObject obj = new JSONObject(new JSONTokener(new FileReader(new File("1.txt"))));

System.out.println(obj.getJSONArray("book").getString(1)); //可以读取book2

}

}

复杂JSON格式的读取代码:

{"section":{

"title":"BOOK",

"signing":[

{

"author":

{

"name":"author-1"

},

"book":

{

"title":"book1",

"price":"$11"

}

},

{

"author":

{

"name":"author-2"

},

"book":

{

"title":"book2",

"price":"$22"

}

}

]}

}

}

public class JsonStringerDemo {

public static void main(String[] args) throws Exception{

JSONObject obj = new JSONObject(new JSONTokener(new FileReader(new File("1.txt"))));

System.out.println(obj.getJSONObject("section").getJSONArray("signing").getJSONObject(0).getJSONObject("author").getString("name")); <span style="white-space:pre"> </span>//获取author-1

}

}






三、JSON总结


1在Java中JSON格式的String最好用单引号表示;


2.利用JSONObject+JSONTokener能够读取JSON格式文件对象;


3.利用PrintWriter+JSONStringer可以写入JSON文件;



四、JSON参考资料


http://www.json.org/js.html


http://www.json.org/


http://www.prototypejs.org/learn/json


http://www.json.org/java/index.html


http://www.ibm.com/developerworks/cn/web/wa-ajaxintro10/index.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: