对JSON格式数据的操作和解析和创建

对JSON格式数据的操作和解析和创建

JSON简介:

JSONJavaScript Object Notation的简写,JSON是一种轻量级的数据交换格式,其基于JavaScript的一个子集。JSON采用独立于程序语言的的文本格式,但类似于C语言家族。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)

 

JSON的语法规则:

       数据的一半格式是  “名称”:”” 这种组合中名称和键值对按照先后顺序排放在双引号中,并在中间用冒号隔开例如 ”fristname”:”json其中的键值对可以包括以下类型:

1. 数字 (整数或浮点数)

2. 字符串(在双引号中)

3. 逻辑值(true false

4. 数组 (在方括号中)

5. 对象 (在花括号中)

6. Null

同时:

1.    数据不止一个时用逗号分隔

2.    对象由花括号保存

3.    数组有方括号保存

4.    结束不需要分号

 

一个JSON格式的文本的例子

{
       "languages":[
              {"ID":1,"IDE":"Eclipse","Name":"Java"},
              {"ID":2,"IDE":"Xcode","Name":"Swift"},
              {"ID":3,"IDE":"VisualStudio","Name":"C#"}
       ]
}


       其中对最外围有一对花括号,表示这是一个JSON格式的数据对象,其中的名字为,languages,之后的键值对中是一个方括号,表示这是一个数组,数组中又包括三个对象,每个对象都包含三个 名称/键值 对数据 分别是ID IDE 以及Name和与其对应的值。

   

由此看来

JSON的结构有两种(摘自百度百科):

1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是数字、字符串、数组、对象几种。

经过对象、数组2种结构就可以组合成复杂的数据结构了

 

JSON数据的访问

     

  Development={
       "languages":[
              {"ID":1,"IDE":"Eclipse","Name":"Java"},
              {"ID":2,"IDE":"Xcode","Name":"Swift"},
              {"ID":3,"IDE":"VisualStudio","Name":"C#"}
       ],
       “programmer”:[
       {“name”:”alex”,”address”:”U.S”}
       {“name”:”bob”,”address”:”France”}
]
}

    以以上代码为例:

    Development.languages[1].IDE   对应的便是Xcode

    Development.programmer[0].name  对应的便是alex

 

对JSON格式的数据的操作另付代码:

package com.example.test_json;
import java.io.*;
import org.json.*;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
 
public class MainActivity extends Activity {
    @Override
    protected voidonCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
    try{
           InputStreamReader isr=newInputStreamReader(getAssets().open("test.JSON"),"UTF-8");
           BufferedReader br=newBufferedReader(isr);
           String line;
           StringBuilder builder=new StringBuilder();
           while((line=br.readLine())!=null){
                  builder.append(line);
           }
           br.close();
           isr.close();
           JSONObject root=newJSONObject(builder.toString());
           //System.out.println("Cat"+root.getString("CAT"));
           JSONArray array=root.getJSONArray("languages");
           for(int i=0;i<array.length();i++){
                  JSONObjectlan=array.getJSONObject(i);
                  System.out.println("----------------");
                  System.out.println("ID="+lan.getInt("ID"));
                  System.out.println("IDE="+lan.getString("IDE"));
                  System.out.println("NAME="+lan.getString("Name"));
           }
    }
   catch(UnsupportedEncodingException e){
           e.printStackTrace();
    }
    catch(IOExceptione){
           e.printStackTrace();
    }
   catch(JSONException e){
           e.printStackTrace();
    }
       }
}


 

JSON格式的文件的创建

以此段代码为例通过注释说明

   

    try{                                                                        //捕获可能的异常
JSONObject root=new JSONObject();          //创建一个JSONObject对象root
               root.put("cat", "it");                                  //root中加入第一个键值对
              
               JSONObject lan1=newJSONObject();   //同时创建三个JSONObject对象
               JSONObject lan2=newJSONObject();
               JSONObject lan3=newJSONObject();
              
               lan1.put("id", 1);
               lan1.put("ide","eclipse");                         //往三个对象中加入对应的 名称/键值对
               lan1.put("name","java");
              
               lan2.put("id", 2);
               lan2.put("ide","visualstdio");
               lan2.put("name","c#");
       
               lan3.put("id", 3);
               lan3.put("ide","Xcode");
               lan3.put("name","swift");
              
               JSONArray  array=new JSONArray();    //创建一个JSON格式的数组,将三个对象放入
               array.put(lan1);
               array.put(lan2);
               array.put(lan3);
              
               root.put("langauages", array);          //再将这个数组作为键值对传入
              
               System.out.println(root.toString());
        }
        catch (Exception e) {
                     e.printStackTrace();
              }
}
最终创建的JSON文件的内容是
{
       "languages":[
              {"ID":1,"IDE":"Eclipse","Name":"Java"},
              {"ID":2,"IDE":"Xcode","Name":"Swift"},
              {"ID":3,"IDE":"VisualStudio","Name":"C#"}
       ],
       “cat”:“it”     
]
}

最后附上一个在线测试JSON格式的网址:

http://www.bejson.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值