java中Map、JSONArray、JSONObject的关系及转换以及json字符串与json对象的转化

    本文通过实际代码来探讨一下java中的Map、JSONArray、JSONObject的关系及其转换。直接上代码:

import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
//如果没有这些包请去这个地址下载:http://download.csdn.net/download/liu_ares/9962569
public class JSONTest1 {
    public static void main(String[] args){
        JSONObjectSample();
        JSONObject json = createJsonByMapTest();
        System.out.println(json.getString("name"));//getString(String)方法就可以获得对应String的值
        JSONArray majorArray = json.getJSONArray("major");//获取JSON中的数组的时候需要通过getJSONArray(String) 返回值是一个JSONArray对象 通过这个对象的get(int index)方法就可以通过索引index获取对应索引的值
    }

    private static JSONObject JSONObjectSample() {
        JSONObject jsonTest = new JSONObject();//直接创建一个JSONObject对象
        Object nullObject = null;
        try{
            jsonTest.put("name", "shuqi");//直接往JSONObject对象内put JSON键值对
            jsonTest.put("birthday", "1998-12-08");
            jsonTest.put("major",new String[]{"Software","English"});//json的value传数组
            jsonTest.put("girlfriend", nullObject);//如果这里使用null为第二个参数 会产生歧义 所以这里使用nullObject代替null跳过编译
            System.out.println(jsonTest.toString());
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return jsonTest;
    }
    
    private static JSONObject createJsonByMapTest(){
        String nullObject=null;
        Map<String,Object>  jsonTestMap = new HashMap<String,Object>();
        jsonTestMap.put("name", "shuqi");
        jsonTestMap.put("birthday", "1998-12-08");
        jsonTestMap.put("major",new String[]{"Software","English"});//json的value传数组
        jsonTestMap.put("girlfriend", nullObject);//如果这里使用null为第二个参数 会产生歧义 所以这里使用nullObject代替null跳过编译
        JSONObject jsonTest = new JSONObject();
        jsonTest.putAll(jsonTestMap);//putAll(Map) 将Map变成json
        System.out.println(jsonTest.toString());
        return jsonTest;
    }
}

总结:在创建JSON的时候,可以先new一个JSONObject对象,然后直接通过JSONObject对象的put函数往这个JSONObject对象内添加JSON键值对,也可以通过生成一个Map对象,往Map里生成键值对,然后通过JSONObject对象的putAll(Map)方法将Map转化为JSONObject对象。由于JSONObject对象中对应某个键的值是一个数组,这个时候就需要用到getJSONArray(String key)的方法来获取对应key的数组,然后再返回的JSONArray数组对象的get(int index)方法获取该数组对应索引的值。

最后加上json字符串与json对象的转化:entity obj =  JSONObject.toBean(JSONObject.fromObject(jsonstr), entity.getClass());//这样就可以将jsonstr这个json字符串以json对象的形式存在类类型为entity.getClass()的对象obj里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值