Java解析Json字串--Map
阿新 • • 發佈:2019-02-19
Json字串示例:
{
"age": 20,
"gender": "male",
"grades": "三班",
"name": "蘇三",
"weight": 63.5
}
遇到這樣的格式的Json字串,我們可以將其解析成一個bean,同時我們也可以直接將其解析為Map。
解析成Map比較簡單,我們直接來看看解析方法。
第一種方法:
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);
}
}