slider

还是菜鸟
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

json学习(java篇)

Posted on 2012-02-06 09:54  slider  阅读(2608)  评论(0编辑  收藏  举报

  前一个小项目中用到了json:服务器返回的数据有xml或者json格式的数据,由于json简洁、轻量、高性能等优点,我们当时就采用的是json格式的数据。上个月没有心情学习啊,就索性多玩会儿,不过今年得有个目标,至少博客得多写写,质量上也希望比前几个月有所提升,那就开始吧。

  先从json基础知识开始学起。官网不用多说了吧:json.org。

  json是一种轻量型的数据交互格式。它很容易被人们阅读和书写,也易于机器解析和生成。它给予javasrcipt,是一种文本格式的、完全独立的语言。

  json中有两种数据结构:

  • 名称/值对的集合(你也可以简单理解为Map)。不同的语言,这是作为一个对象,记录,结构,字典,哈希表键列表或关联数组实现
  • 值的有序列表(通常是Array)。在大多数语言中实现由一个数组,向量,列表或序列

  这些都是通用的数据结构几乎所有的现代编程语言都支持这种或那种形式也正是如此,使json格式的数据可以在不同的编程语言中交互。

  在JSON中,他们采取这些形式

  一个json对象是一个无序名称/值对一个对象以 ‘ { 开始,以 ‘ }结束每个名称后跟''(冒号),名称/值对的分隔符为‘’(逗号)

  一个json对象如下:

      

  有上图可以看出:名称/值对中的名称必须是String型的数据结构,那么value又有什么类型的数据结构呢?

  

  这里得说说array数据类型了,也就是上面的所说的“值的有序列表”。这个数组以‘ [ ’(左括号)开始,以 ’ ] ‘结束,以','(逗号)作为分隔符号。

  

  

  解释下value里面的string,number,null这个三个元素。

  string是由0个或多个Unicode字符组成,由双引号包裹,非常想c或java中的字符串。number在c或java中都有这样的数据类型就不多说了。但是null又是什么呢?null是json里的一个特殊的value,它可以在你需要的时候转化成任何数据类型。

  废话不多说,举例吧:

  

  //Merge two JSON objects
JSONObject obj1 = new JSONObject();
obj1.put("name","foo");
obj1.put("num",new Integer(100));
obj1.put("balance",new Double(1000.21));

JSONObject obj2 = new JSONObject();
obj2.put("is_vip",new Boolean(true));
obj2.put("nickname",null);
obj2.putAll(obj1);
System.out.print(obj2);

 

 

 String json = "{"
+ " \"query\": \"Pizza\", "
+ " \"locations\": [ 94043, 90210 ] "
+ "}";

JSONObject object = (JSONObject) new JSONTokener(json).nextValue();
String query = object.getString("query");
JSONArray locations = object.getJSONArray("locations");