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

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。JSON总结- JSON与JAVA的数据转换实例,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

转载自: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代码实例

  1. import net.sf.json.JSONArray;    
  2. import net.sf.json.JSONObject;    
  3.     
  4. public class Test {    
  5.     
  6.     public static void main(String[] args) throws Exception{    
  7.         JSONObject jsonobj = new JSONObject(“{‘name’:’xiazdong’,’age’:20}”);    
  8.         String name = jsonobj.getString(“name”);    
  9.         int age = jsonobj.getInt(“age”);    
  10.         System.out.println(name+“:”+age);       
  11.             
  12.     }    
  13. }   


2.JSONArray代码实例

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

  1. import net.sf.json.JSONArray;    
  2. import net.sf.json.JSONObject;    
  3.     
  4. public class Test {    
  5.     
  6.     public static void main(String[] args) throws Exception{    
  7.                 
  8.         JSONArray jsonarray = new JSONArray(“[{‘name’:’xiazdong’,’age’:20},{‘name’:’xzdong’,’age’:15}]”);    
  9.         for(int i=0;i<jsonarray.length();i++){    
  10.             String name = jsonarray.getJSONObject(i).getString(“name”);    
  11.             int age = jsonarray.getJSONObject(i).getInt(“age”);    
  12.             System.out.println(“name=”+name);    
  13.             System.out.println(“age=”+age);    
  14.         }    
  15.             
  16.     }    
  17. }    

3.嵌套JSONObject和JSONArray代码实例   

  1. public class Test {
  2.     public static void main(String[] args) throws Exception{    
  3.     
  4.         String str = “{‘name’:’xiazdong’,’age’:20,’book’:[‘book1′,’book2’]”;    
  5.         JSONObject obj = new JSONObject(str);    
  6.         System.out.println(obj.getJSONArray(“book”).getString(0));    
  7.     }    
  8. }   


4.JSONStringer代码示例

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

JSONStringer是JSONWriter的子类;

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

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

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

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

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

key()表示添加一个key;

value()表示添加一个value;

  1. public class JsonStringerDemo {    
  2.     
  3.     public static void main(String[] args) throws Exception{    
  4.         JSONStringer stringer = new JSONStringer();    
  5.         String str = stringer.object().key(“name”).value(“xiazdong”).key(“age”).value(20).endObject().toString();    
  6.         System.out.println(str);    
  7.     }    
  8.     
  9. }   


复杂JSON格式写入

  1. public class JsonStringerDemo {    
  2.     
  3.     public static void main(String[] args) throws Exception{    
  4.             
  5.         JSONStringer js = new JSONStringer();    
  6.         JSONObject obj2 = new JSONObject();    
  7.         JSONObject obj3 = new JSONObject();    
  8.         JSONObject obj4 = new JSONObject();    
  9.         obj4.put(“title”“book1”).put(“price”“$11”);    
  10.         obj3.put(“book”, obj4);    
  11.         obj3.put(“author”new JSONObject().put(“name”“author-1”));    
  12.             
  13.         JSONObject obj5 = new JSONObject();    
  14.         JSONObject obj6 = new JSONObject();    
  15.         obj6.put(“title”“book2”).put(“price”“$22”);    
  16.         obj5.put(“book”, obj6);    
  17.         obj5.put(“author”new JSONObject().put(“name”“author-2”));    
  18.             
  19.         JSONArray obj7 = new JSONArray();    
  20.         obj7.put(obj3).put(obj5);    
  21.             
  22.             
  23.             
  24.         obj2.put(“title”,“BOOK”);    
  25.         obj2.put(“signing”, obj7);    
  26.             
  27.         js.object().key(“session”).value(obj2).endObject();    
  28.             
  29.         System.out.println(js.toString());    
  30.             
  31.         PrintWriter out = new PrintWriter(new FileOutputStream(1.txt));    
  32.         out.println(js.toString());    
  33.             
  34.         
  35.     }    
  36.     


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

  1. {“section”:{    
  2.         “title”:“BOOK”,    
  3.         “signing”:[    
  4.         {    
  5.             “author”:    
  6.             {    
  7.                 “name”:“author-1”    
  8.             },    
  9.             “book”:    
  10.             {    
  11.                 “title”:“book1”,    
  12.                 “price”:“$11”    
  13.             }    
  14.         },    
  15.         {    
  16.             “author”:    
  17.             {    
  18.                 “name”:“author-2”    
  19.             },    
  20.             “book”:    
  21.             {    
  22.                 “title”:“book2”,    
  23.                 “price”:“$22”    
  24.             }    
  25.         }       
  26.         ]}    
  27.     }    
  28. }    



5.JSONTokener代码示例

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

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

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

  1. public class JsonStringerDemo {    
  2.     
  3.     public static void main(String[] args) throws Exception{    
  4.         JSONObject obj = new JSONObject(new JSONTokener(new FileReader(new File(“1.txt”))));    
  5.         System.out.println(obj.getJSONArray(“book”).getString(1)); //可以读取book2    
  6.     }    
  7.     
  8. }    

 

复杂JSON格式的读取代码:

  1. {“section”:{    
  2.         “title”:“BOOK”,    
  3.         “signing”:[    
  4.         {    
  5.             “author”:    
  6.             {    
  7.                 “name”:“author-1”    
  8.             },    
  9.             “book”:    
  10.             {    
  11.                 “title”:“book1”,    
  12.                 “price”:“$11”    
  13.             }    
  14.         },    
  15.         {    
  16.             “author”:    
  17.             {    
  18.                 “name”:“author-2”    
  19.             },    
  20.             “book”:    
  21.             {    
  22.                 “title”:“book2”,    
  23.                 “price”:“$22”    
  24.             }    
  25.         }       
  26.         ]}    
  27.     }    
  28. }    

  1. public class JsonStringerDemo {    
  2.     
  3.     public static void main(String[] args) throws Exception{    
  4.         JSONObject obj = new JSONObject(new JSONTokener(new FileReader(new File(“1.txt”))));    
  5.         System.out.println(obj.getJSONObject(“section”).getJSONArray(“signing”).getJSONObject(0).getJSONObject(“author”).getString(“name”)); <span style=“white-space:pre”>     </span>//获取author-1    
  6.     }    
  7.     
  8. }    


三、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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/162972.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!