在Android中操作JSON数据-读取JSON格式数据/创建JSON格式数据

JSONJavaScript 对象表示法(JavaScriptObject Notation)。独立于语言和平台,比 XML 更小、更快,更易解析。本课时介绍JSON数据格式。

Android平台自带了JSON解析的相关API,可以将文件、输入流中的数据转化为JSON对象,然后从对象中获取JSON保存的数据内容。本课时讲解读取JSON格式数据。

Android平台自带了JSON构造的相关API,可以轻松地构造JSON对象、JSON数组,并且为他们赋值,而且很容易将JSON对象转换为字符串用于传播。本课时讲解创建JSON格式数据。

创建一个新的工程LearnTestJSON,一个空的Activity

创建一个test.JSON文件并copy到Asset目录(可用记事本编辑保存成utf-8编码方式)

{

       "languages":[

              {"id":1,"ide":"Eclipse","name":"java"},

              {"id":2,"ide":"Xcode","name":"Swift"},

              {"id":3,"ide":"Visual Studio","name":"C#"}

       ],

       "cat":"it"

 

}

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.btnReadJSON).setOnClickListener(this);
        findViewById(R.id.btnWriteJSON).setOnClickListener(this);
    }
  
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btnReadJSON:
                goReadJSON();
                break;
            case R.id.btnWriteJSON:
                goWriteJSON();
                break;
        }
  
    }
  
    private void goWriteJSON() {
        try {
            JSONObject root=new JSONObject();
            root.put("cat","it");
  //            {"id":1,"ide":"Eclipse集成开发环境","name":"java语言"},
            JSONObject lan1=new JSONObject();
            lan1.put("id",1);
            lan1.put("ide","Eclipse基础开发环境");
            lan1.put("name","Java语言");
  //            {"id":2,"ide":"Xcode","name":"Swift语言"},
            JSONObject lan2=new JSONObject();
            lan2.put("id",2);
            lan2.put("ide","Xcode");
            lan2.put("name","Swift语言");
  //            {"id":3,"ide":"Visual Studio工作室","name":"C#语言"}
            JSONObject lan3=new JSONObject();
            lan3.put("id",3);
            lan3.put("ide","Visual Studio工作室");
            lan3.put("name","C#语言");
  
            JSONArray array=new JSONArray();
            array.put(lan1);
            array.put(lan2);
            array.put(lan3);
  
            root.put("languages",array);
            System.out.println(root.toString());
  
        } catch (JSONException e) {
            e.printStackTrace();
        }
  
    }
  
    private void goReadJSON() {
        try {
            InputStreamReader isr = new InputStreamReader(getAssets().open("test.json"),"utf-8");
            BufferedReader br=new BufferedReader(isr);
            String line;
            StringBuilder builder=new StringBuilder();
            while ((line=br.readLine())!=null){
                builder.append(line);
            }
            br.close();
            isr.close();
  
            JSONObject root=new JSONObject(builder.toString());
            System.out.println("cat="+root.getString("cat"));
            JSONArray array=root.getJSONArray("languages");
            for (int i=0;i<array.length();i++){
                JSONObject lan=array.getJSONObject(i);
                System.out.println("-------------------");
                System.out.println("id="+lan.getInt("id"));
                System.out.println("name="+lan.getString("name"));
                System.out.println("ide="+lan.getString("ide"));
            }
  
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牵手生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值