android解json的两种方法

引用4个
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONTokener;
import org.json.*;

方法1
try {
    // 首先最外层是{},是创建一个对象
    JSONObject person = new JSONObject();
    // 第一个键phone的值是数组,所以需要创建数组对象
    JSONArray phone = new JSONArray();
    phone.put("12345678").put("87654321");
    person.put("phone", phone);

    person.put("name", "yuanzhifei89");
    person.put("age", 100);
    // 键address的值是对象,所以又要创建一个对象
    JSONObject address = new JSONObject();
    address.put("country", "china");
    address.put("province", "jiangsu");
    person.put("address", address);
    person.put("married", false);

    String y=person.toString();
    try {
        JSONTokener jsonParser = new JSONTokener(y.toString());
        // 此时还未读取任何json文本,直接读取就是一个JSONObject对象。
        // 如果此时的读取位置在"name" : 了,那么nextValue就是"yuanzhifei89"(String)
        JSONObject person2 = (JSONObject) jsonParser.nextValue();
        // 接下来的就是JSON对象的操作了
     String s=   person2.getJSONArray("phone").toString();
        person2.getString("name");
        person2.getInt("age");
        person2.getJSONObject("address");
        person2.getBoolean("married");
    } catch (JSONException ex) {
        // 异常处理代码
    }
} catch (JSONException ex) {
    // 键为null或使用json不支持的数字格式(NaN, infinities)
    throw new RuntimeException(ex);
}
 
方法2
try {
    JSONStringer jsonText = new JSONStringer();
    // 首先是{,对象开始。object和endObject必须配对使用
    jsonText.object();

    jsonText.key("phone");
    // 键phone的值是数组。array和endArray必须配对使用
    jsonText.array();
    jsonText.value("12345678").value("87654321");
    jsonText.endArray();

    jsonText.key("name");
    jsonText.value("yuanzhifei89");
    jsonText.key("age");
    jsonText.value(100);

    jsonText.key("address");
    // 键address的值是对象
    jsonText.object();
    jsonText.key("country");
    jsonText.value("china");
    jsonText.key("province");
    jsonText.value("jiangsu");
    jsonText.endObject();

    jsonText.key("married");
    jsonText.value(false);

    // },对象结束
    jsonText.endObject();

    try {
        JSONTokener jsonParser = new JSONTokener(jsonText.toString());
        // 此时还未读取任何json文本,直接读取就是一个JSONObject对象。
        // 如果此时的读取位置在"name" : 了,那么nextValue就是"yuanzhifei89"(String)
        JSONObject person = (JSONObject) jsonParser.nextValue();
        // 接下来的就是JSON对象的操作了
        person.getJSONArray("phone");
        person.getString("name");
        person.getInt("age");
        person.getJSONObject("address");
        person.getBoolean("married");
    } catch (JSONException ex) {
        // 异常处理代码
    }

} catch (JSONException ex) {
    throw new RuntimeException(ex);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值