使用JSONObject和JSONArray

原创 2015年07月07日 23:48:09

JSONObject

JSONObject是一个无序的键值对集合。值可以是任意类型:Boolean,JSONArray,JSONObject,Number,String,or the JSONObject.NULL Object.

http://maps.google.com/maps/api/geocode/json?sensor=false&address=beijing 返回的json如下:

 {
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "北京",
               "short_name" : "北京",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "北京市",
               "short_name" : "北京市",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "中国",
               "short_name" : "CN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "中国北京市北京市",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 41.0608158,
                  "lng" : 117.5146251
               },
               "southwest" : {
                  "lat" : 39.4427581,
                  "lng" : 115.4234115
               }
            },
            "location" : {
               "lat" : 39.904211,
               "lng" : 116.407395
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.2164962,
                  "lng" : 116.7829835
               },
               "southwest" : {
                  "lat" : 39.6612714,
                  "lng" : 116.0119343
               }
            }
         },
         "place_id" : "ChIJuSwU55ZS8DURiqkPryBWYrk",
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}

JSONArray

JSONArray是一个有序的值序列。值可以是任意类型:Boolean, JSONArray, JSONObject, Number, String, or the JSONNull object。

形如:

[ "locality", "political" ]

实例:

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JsonObjectArrayTest {

    public static void main(String[] args) {
        // 1.从字符串转换成JSONArray对象,必须首尾为[,]; 工具代码会判断是否含有'['和']'
        String types1 = "[\"locality\",\"political\"]";
        JSONArray jsonArray1 = JSONArray.fromObject(types1);
        System.out.println(jsonArray1.toString());

        // 2.从一个JSONArray转换成另一个JSONArray对象
        JSONArray jsonArray2 = JSONArray.fromObject(jsonArray1);
        System.out.println(jsonArray2.toString());

        // 3.将Collection对象, 本例为ArrayList转换成JSONArray对象
        List<String> types3 = new ArrayList<String>();
        types3.add("locality");
        types3.add("political");
        JSONArray jsonArray3 = JSONArray.fromObject(types3);
        System.out.println(jsonArray3.toString());

        // 4. new 一个JSONObject对象,使用put方法添加成员,如果已经存在key, 则替换value值
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("types", jsonArray3);
        System.out.println(jsonObject1.toString());

        // 5.将一个JSONObject对象转换成另一个JSONObject对象
        JSONObject jsonObject2 = JSONObject.fromObject(jsonObject1);
        System.out.println(jsonObject2);

        // 6.将一Map对象转换成JSONObject对象
        Map<String, List<String>> map = new LinkedHashMap<String, List<String>>();
        List<String> list = new ArrayList<String>();
        list.add("locality");
        list.add("political");
        map.put("types", list);
        JSONObject jsonObject3 = JSONObject.fromObject(map);
        System.out.println(jsonObject3);

        // 7.将String转换成JSONObject对象
        String str1 = "{\"types\":[\"locality\",\"political\"]}";
        JSONObject jsonObject4 = JSONObject.fromObject(str1);
        System.out.println(jsonObject4);

        // 8.累积value到这个key下,这个key下value变成JSONArray, 如果value本身就是JSONArray,直接添加到里面
        JSONObject jsonObject5 = jsonObject4.accumulate("place_id", "ChIJuSwU55ZS8DURiqkPryBWYrk");
        System.out.println(jsonObject5.toString());
        JSONObject jsonObject6 = jsonObject5.accumulate("place_id", "accumulate");
        System.out.println(jsonObject5.toString());
        System.out.println(jsonObject6);
        // 9.element将键值对放到JSONObject中, 如果key存在,则替换原来的value; 
        // element与put的区别: 1.put返回的Object对象; element返回的是JSONObject对象
        // 2.put的key为Object对象,element的key为String
        JSONObject jsonObject7 = jsonObject6.element("types", 1);
        System.out.println(jsonObject7.toString());

        // 10.使用get方法,获取成员
        System.out.println(jsonObject7.getInt("types"));
        System.out.println(jsonObject7.getJSONArray("place_id"));   
        System.out.println(jsonObject7.getJSONArray("place_id").get(1));


    }

}

输出:

["locality","political"]
["locality","political"]
["locality","political"]
{"types":["locality","political"]}
{"types":["locality","political"]}
{"types":["locality","political"]}
{"types":["locality","political"]}
{"types":["locality","political"],"place_id":"ChIJuSwU55ZS8DURiqkPryBWYrk"}
{"types":["locality","political"],"place_id":["ChIJuSwU55ZS8DURiqkPryBWYrk","accumulate"]}
{"types":["locality","political"],"place_id":["ChIJuSwU55ZS8DURiqkPryBWYrk","accumulate"]}
{"types":1,"place_id":["ChIJuSwU55ZS8DURiqkPryBWYrk","accumulate"]}
1
["ChIJuSwU55ZS8DURiqkPryBWYrk","accumulate"]
accumulate

总结:

JSONObject添加成员的方法element()与put()的区别:

1.put返回的Object对象,element返回的是JSONObject对象

2.put的key为Object对象,element的key为String

本文介绍的方法是net.sf.json下的JSONObject和JSONArray, 而非org.json下。

wiki:

http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html
http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONArray.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

JSONObject和JSONArray区别及基本用法

一、JSONObject和JSONArray的数据表示形式 JSONObject的数据是用 {  } 来表示的,         例如:   { "id" : "123", "courseID" ...
  • u014260748
  • u014260748
  • 2014年11月26日 20:14
  • 27446

JSONObject/JSONArray的区别

JSONObject/JSONArray的区别(1)JSONObject : java对象,用{}包裹起来 例如:{”id”:1 , “username”:”wp”} (2)JSONArray :...
  • wangpei555
  • wangpei555
  • 2016年12月04日 09:51
  • 1367

json数据解析<一> JSONObject和JSONArray的简单使用

这两天在翻新项目,之前写项目的时候因为定义bean对象的时候没有使用泛型,每次请求服务器返回数据时都要定义对象,代码显的很臃肿,于是查了相关资料,这次使用谷歌的json和泛型对象对服务器返回数据进行了...
  • abc6368765
  • abc6368765
  • 2016年03月15日 09:56
  • 944

JsonArray与JsonObject的区别与解析

JsonArray 与JsonObject的区别: JsonArray是以“[]”包裹起来的数组(Array数组),而JsonObject是“{}”包裹起来的对象(Object对象)   jso...
  • greatsuny
  • greatsuny
  • 2014年09月15日 09:12
  • 10248

JSONArray和JSONObject的简单使用

一、为什么要使用JSONArray和JSONObject 1、后台 --》前台 可以把java对象和集合转化成json字符串格式,这样在前台的ajax方法中可以直接转化成json对象使用 ,从后台向前...
  • hao007cn
  • hao007cn
  • 2015年08月12日 14:28
  • 7135

JSONObject、JSONArray区别

最近两个星期接触最多的就是json和map了。    之前用到的json,就是一个键对应一个值,超级简单的一对一关系。现在用到的json那可以层层嵌套啊,刚开始接触的时候,确实有种崩溃的赶脚,不...
  • GarfieldEr007
  • GarfieldEr007
  • 2017年03月26日 22:20
  • 861

JsonArray和JsonObject的使用

import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JsonTest { public ...
  • xu758142858
  • xu758142858
  • 2015年07月04日 14:28
  • 1682

JSON解析之JSONObject与JSONArray的使用

一、JAR包简介 json-lib包是可以将beans,collections,maps,arrays等类与XML和JSON格式相互转换的功能包。JSONObject和JSONArray的正常使用需要...
  • wf131410000
  • wf131410000
  • 2017年05月26日 00:43
  • 510

Android中的JSONObject和JSONArray的使用

在Android的jdk开发包中已经包含了JSON的几个API: 也可以下载JSON包:http://files.cnblogs.com/java-pan/lib.rar JSONObject 在...
  • tuke_tuke
  • tuke_tuke
  • 2016年03月21日 15:46
  • 5000

JSON解析 Gson解析方式 JSONObject JSONArray

直接上代码 主程序代码: package com.cc.mygson; import java.net.Proxy.Type; import org.json.JSONArray; im...
  • v587ge
  • v587ge
  • 2015年10月13日 01:17
  • 2362
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用JSONObject和JSONArray
举报原因:
原因补充:

(最多只允许输入30个字)