JSONObject与JSONArray区别


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

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

{} 双括号表示对象 即 {“key值”:“value值”}

[] 中括号表示数组 即[ {“key值”:“value值”}, {“key值”:“value值”}, {“key值”:“value值”}]

1、生成JSON字符串

JSONObject jsonObject = new JSONObject();
        jsonObject.put(key, value);```

2.解析JSON字符串

1)JavaBean

	//json数组
	{"data":{"age":10,"id":1,"name":"jack"}}
	//
	 /**
     * 解析返回Person类
     *
     * @param data 获取到的数据
     * @return
     */
    	public static Person getPerson(String key, String jsonString) {
    		//new一个对象、类似于实体
			Person person = new Person();
			try {
			//把字符串解析成json对象
        	JSONObject jsonObject = new JSONObject(jsonString);
        	//获取"data"的json对象,即从json对象中取key是data的值
            JSONObject personObject = jsonObject.getJSONObject("data");
            //获取数据,并将数据塞入对象中
            person.setId(personObject.getInt("id"));
            person.setName(personObject.getString("name"));
            person.setAddress(personObject.getString("address"));
            } catch (Exception e) {
            // TODO: handle exception
        }
        return person;
        

2)List数组

//包含多个对象
{"persons":[{"age":10,"id":1,"name":"jack"},{"age":11,"id":2,"name":"rose"}{"age":16,"id":3,"name":"tom"}]}

/**
     * 解析返回多个Person对象
     * @param data 传入的json数据
     * @return
     */
  public static List getPersons(String key, String jsonString) {
        List list = new ArrayList();
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            // 返回json的数组
            JSONArray jsonArray = jsonObject.getJSONArray(key);
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject2 = jsonArray.getJSONObject(i);
                Person person = new Person();
                person.setId(jsonObject2.getInt("id"));
                person.setName(jsonObject2.getString("name"));
                person.setAddress(jsonObject2.getString("address"));
                list.add(person);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return list;
    }


public static List getList(String key, String jsonString) {
        List list = new ArrayList();
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            JSONArray jsonArray = jsonObject.getJSONArray(key);
            for (int i = 0; i < jsonArray.length(); i++) {
                String msg = jsonArray.getString(i);
                list.add(msg);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
        return list;
    }

3)嵌套Map的List数组

public static <List> listKeyMaps(String key,String jsonString) {
        List> list = new ArrayList>();
        try {
            JSONObject jsonObject = new JSONObject(jsonString);
            JSONArray jsonArray = jsonObject.getJSONArray(key);
            //通过循环获取数据,并放入list集合中
        for (int i = 0;i<jsonArray .length();i++){
            Map<String,Object> map = new HashMap<>();
            int id = jsonArray .getJSONObject(i).getInt("id");
            map.put("id",id);
            String name = jsonArray .getJSONObject(i).getString("name");
            map.put("name",name);
            int age = jsonArray .getJSONObject(i).getInt("age");
            map.put("age",age);
            list.add(map);
        }
        return list;
    }

3.JSONObject、JSONArray区别

1)JSONObject

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

2)JSONArray

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

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

JSONObject Json = new JSONObject();
JSONArray JsonArray = new JSONArray();

Json.put(“key”, “value”);//JSONObject对象中添加键值对
JsonArray.add(Json);//将JSONObject对象添加到Json数组中

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

Map<String,String> strmap=new JSONObject();
这里的需求是:request对象获取的map,想要返回json格式也不用白费力了。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值