JSON的简介


一、什么是JSON?

JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。

JSON就是一串字符串 只不过元素会使用特定的符号标注。

{} 双括号表示对象

[] 中括号表示数组

"" 双引号内是属性或值

: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)

所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象

而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组

当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象

二、JSON解析之传统的JSON解析

1、生成json字符串

public static String createJsonString(String key, Object value) {         JSONObject jsonObject = new JSONObject();         jsonObject.put(key, value);         return jsonObject.toString(); }


一、JSONObject和JSONArray的数据表示形式

  JSONObject的数据是用 {  } 来表示的,

        例如:   { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null  }  

  而JSONArray,顾名思义是由JSONObject构成的数组,用  [ { } , { } , ......  , { } ]  来表示

       例如:   [ {  "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" }  ,  {  "content" : null, "beginTime" : 1398873600000  "endTime" } ] ; 

        表示了包含2个JSONObject的JSONArray。

  可以看到一个很明显的区别,一个用的是 {  }  ,一个最外面用的是 [  ]  ;

 

二、如何从字符串String获得JSONObject对象和JSONArray对象

        JSONObject  jsonObject  = new JSONObject (String  str);

        JSONArray jsonArray = new JSONArray(String str  ) ;

 

三、如何从JSONArray中获得JSONObject对象

       大家可以把JSONArray当成一般的数组来对待,只是获取的数据内数据的方法不一样

       JSONObject   jsonObject = (JSONObject)jsonArray.get(i);

        JSONObject   jsonObject  =  jsonArray.getJSONObject(i) ;  

     两者都可。第一种注意转换 

 

四、获取JSON内的数据

       int   jid= jsonObject.getInt ( "id" ) ;    //  这里的jid得到的数据就是123.

       String  jcourse=jsonObject.getString( " courseID") ;   // 这里的jcourse得到的数据就是huangt-test.

      Strirng jcourse = jsonObject.get("courseID").toString();

 

 五、一般地为键值对

       eg:{  name:"xm", value:"张三"}

       String jname = null;

       if(jsonObject.get("name").equals("xm")){

         jname=jsonObject.get("value").toString();

       }

 

 六:  JSON.parse( str )    --> 把字符串转为JSON对象

         JSON.stringify( obj ) -->把对象解析为字符串

 


JSONObject、JSONArray区别

 json,就是一个键对应一个值,超级简单的一对一关系。现在用到的json那可以层层嵌套啊,刚开始接触的时候,确实有种崩溃的赶脚,不想去理,取个数据还那么麻烦。其实,就跟if else语句一样,如果if中套if,if中再套if,写的规范了还行,要是代码格式不规范,那我们肯定也看着麻烦。所以啊,对于json嵌套,只要记住符号“:”前是键,符号后是值大括号成对找,一层层剥开,就清楚了。 举个例子说明,如下:

[{name1:{name2:{name3:'value1',name4:'value2'}}},{}]

  从外到里看,例子中就是一个数组,数组里面是两个json格式的字符串。这样分析思路就清晰多了。

     工作中需要取出name4的值,你们会怎么取呢?。最初我都想过字符串截取,那时还不了解JSONArray,现在知道了,取出来也就相当容易了。

     取出name4值过程步骤:1,将以上字符串转换为JSONArray对象;2,取出对象的第一项,JSONObject对象;3,取出name1的值JSONObject对象;4,取出name2的值JSONObject对象;5,取出name4的值value2。

    示例中json数组格式的字符串可以通过方法直接转换为JSONArray的格式:

  JSONArray.fromObject(String)

  1. JSONArray getJsonArray=JSONArray.fromObject(arrayStr);//将结果转换成JSONArray对象的形式  
  2. JSONObject getJsonObj = getJsonArray.getJSONObject(0);//获取json数组中的第一项  
  3. String result=getJsonObj.getJSONObject("name1").getJSONObject("name2").getJSONObject("name4"); 

好了我们说说这两个对象。

1,JSONObject

  json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value}

2,JSONArray

  json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式的

  Json对象中添加的是键值对,JSONArray中添加的是Json对象

  1. JSONObject Json = new JSONObject();  
  2. JSONArray JsonArray = new JSONArray();  
  3.   
  4. Json.put("key", "value");//JSONObject对象中添加键值对  
  5. JsonArray.add(Json);//将JSONObject对象添加到Json数组中  

3,JSONObject与Map

    Map map和json都是键值对,不同的是map中键值对中间用等号分开,json中键值对中间用冒号分开。其实json就是一种特殊形式的map。

  1. Map<String,String> strmap=new JSONObject();  

    这里的需求是:request对象获取的map,想要返回json格式也不用白费力了。

posted on 2020-05-14 16:20 青蛙學堂 阅读(221) 评论(0)  编辑 收藏 引用 所属分类: Vs2008c#

只有注册用户登录后才能发表评论。
<2020年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(8)

随笔分类

随笔档案

收藏夹

青蛙学堂

最新评论

阅读排行榜

评论排行榜