歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java解析Json字符串--Map

Java解析Json字符串--Map

Json字符串示例:

{
    "age": 20,
    "gender": "male",
    "grades": "三班",
    "name": "蘇三",
    "weight": 63.5
}

遇到這樣的格式的Json字符串,我們可以將其解析成一個bean,同時我們也可以直接將其解析為Map。

解析成Map比較簡單,我們直接來看看解析方法。

--------------------------------------分割線 --------------------------------------

[譯]JSON數據范式化(normalizr)  http://www.linuxidc.com/Linux/2016-02/128288.htm

如何處理JSON中的特殊字符 http://www.linuxidc.com/Linux/2015-09/123067.htm

Struts中異步傳送XML和JSON類型的數據 http://www.linuxidc.com/Linux/2013-08/88247.htm

Linux下JSON庫的編譯及代碼測試 http://www.linuxidc.com/Linux/2013-03/81607.htm

jQuery 獲取JSON數據[$.getJSON方法] http://www.linuxidc.com/Linux/2013-03/81673.htm

用jQuery以及JSON包將表單數據轉為JSON字符串 http://www.linuxidc.com/Linux/2013-01/77560.htm

在C語言中解析JSON配置文件 http://www.linuxidc.com/Linux/2014-05/101822.htm

--------------------------------------分割線 --------------------------------------

第一種方法:

package com.test;

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

import net.sf.json.JSONObject;

public class Domain {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {

        String jsonStr = "{\"weight\":51.3,\"name\":\"露西\",\"age\":26,\"gender\":\"female\",\"grades\":\"三班\"}";

        Map<String, Object> map = new HashMap<String, Object>();

        map = JSONObject.fromObject(jsonStr);

        System.out.println(map.get("weight"));
        System.out.println(map.get("name"));
        System.out.println(map.get("age"));
        System.out.println(map.get("gender"));
        System.out.println(map.get("grades"));
    }
}

說明:

這種方法比較暴力直接,我們直接將得到的JSONObject賦值給map即可,連強制類型轉換都不需要。(個人感覺這種方式比較簡單方便,但是網上很少有這樣實現的,具體原因未知。JDK1.7下測試完全沒問題。)
第二種方法:

package com.test;

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

import net.sf.json.JSONObject;

public class Domain {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {

        String jsonStr = "{\"weight\":51.3,\"name\":\"露西\",\"age\":26,\"gender\":\"female\",\"grades\":\"三班\"}";

        Map<String, Object> map = new HashMap<String, Object>();

        JSONObject jsonObject = JSONObject.fromObject(jsonStr);

        Iterator<String> keys = jsonObject.keys();//定義迭代器

        String key = null;
        Object value = null;

        while(keys.hasNext()){
            key = keys.next();
            value = jsonObject.get(key);

            map.put(key, value);
        }

        System.out.println(map.get("weight"));
        System.out.println(map.get("name"));
        System.out.println(map.get("age"));
        System.out.println(map.get("gender"));
        System.out.println(map.get("grades"));
    }
}

說明:

這種方式比較傳統,網上也大都是采用的這種方式。
最後,我們來看看怎麼通過Map生成Json字符串

package com.test;

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

import net.sf.json.JSONObject;

public class Domain {

    public static void main(String[] args) {

        Map<String, Object> map = new HashMap<String, Object>();

        map.put("age", 26);
        map.put("gender", "female");
        map.put("grades", "三班");
        map.put("name", "露西");
        map.put("weight", 51.3f);

        String jsonStr = JSONObject.fromObject(map).toString();
        System.out.println(jsonStr);
    }
}

Copyright © Linux教程網 All Rights Reserved