jsonobject转map的方法,android怎么把json转换为hashmap
jsonobject转map的方法,android怎么把json转换为hashmap详细介绍
本文目录一览: “JsonObject”如何转成“Map”?
首先,你先确认你的字符串是否是json格式的,如果是json格式,那你可以使用Gson.jar或json-lib-xx-jdk.jar两个包来自动解析解析。
使用Gson更简单些,只需要导入一个包就可以,但是他如果使用Object解析到int型的话或自动转成double型,需要定义一个准确的类来解析,不能直接使用Object。示例:
Gson gson = new Gson();
Map
map = new HashMap
();
map = gson.fromJson(str, map.getClass());
GSON.jar包的下载地址:http://grepcode.com/snapshot/repo1.maven.org/maven2/com.google.code.gson/gson/2.2.4
使用json-lib包的话需要导入更多的包,需要额外导入commons-lang.jar、ezmorph-1.0.4.jar、commons-logging-1.1.1.jar、commons-collections.jar、commons-beanutils.jar这5个包。解析示例如下:
JSONObject jb = JSONObject.fromObject(str);
Map
map = (Map
)jb;
如果你的字符串不是json格式,那你就需要自己使用split分割字符串,例如:
String str = "color:red|font:yahei|width:800|height:300";
String[] strs = str.split("\\|");
Map
m = new HashMap
();
for(String s:strs){
String[] ms = s.split(":");
m.put(ms[0], ms[1]);
}
JSONObject json = JSONObejct.fromObject(map)
上面的方法转出来的结果为map的key.toString()和value.toString() 的结果对。
SomeClass 是你的自定义类,你没有重写toString方法,默认调用的是Object类的toString方法。
你重写下SomeClass 的toString方法,输出你想要的结果,然后,转出来的JSON就不再是内存地址了
json字符串怎样转换成map
例子如下:
package com.zkn.newlearn.json;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
/**
* JSON字符串自动转换
* Created by zkn on 2016/8/22.
*/
public class JsonToMapTest01 {
public static void main(String[] args){
String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";
//第一种方式
Map maps = (Map)JSON.parse(str);
System.out.println("这个是用JSON类来解析JSON字符串!!!");
for (Object map : maps.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" " + ((Map.Entry)map).getValue());
}
//第二种方式
Map mapTypes = JSON.parseObject(str);
System.out.println("这个是用JSON类的parseObject来解析JSON字符串!!!");
for (Object obj : mapTypes.keySet()){
System.out.println("key为:"+obj+"值为:"+mapTypes.get(obj));
}
//第三种方式
Map mapType = JSON.parseObject(str,Map.class);
System.out.println("这个是用JSON类,指定解析类型,来解析JSON字符串!!!");
for (Object obj : mapType.keySet()){
System.out.println("key为:"+obj+"值为:"+mapType.get(obj));
}
//第四种方式
/**
* JSONObject是Map接口的一个实现类
*/
Map json = (Map) JSONObject.parse(str);
System.out.println("这个是用JSONObject类的parse方法来解析JSON字符串!!!");
for (Object map : json.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
}
//第五种方式
/**
* JSONObject是Map接口的一个实现类
*/
JSONObject jsonObject = JSONObject.parseObject(str);
System.out.println("这个是用JSONObject的parseObject方法来解析JSON字符串!!!");
for (Object map : json.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
}
//第六种方式
/**
* JSONObject是Map接口的一个实现类
*/
Map mapObj = JSONObject.parseObject(str,Map.class);
System.out.println("这个是用JSONObject的parseObject方法并执行返回类型来解析JSON字符串!!!");
for (Object map: json.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
}
String strArr = "{{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}," +
"{\"00\":\"zhangsan\",\"11\":\"lisi\",\"22\":\"wangwu\",\"33\":\"maliu\"}}";
// JSONArray.parse()
System.out.println(json);
}
}
java怎么将json文件读取进来并转成map
json是键值对的形式这点和hashmap很想,第一,先把json解析出来其实就是得到值得过程,然后把你的值自己弄一个键存在hashmap里面,其实很简单就是一个解析和存储到map里面的过程,又不懂得可以问我。最后提醒一点从网络上接受的字符串有肯能前面有影藏的东西,解析可能会报错,而且不同的jar包也会有不同
用JSONUtil.deserialize()就可以了,范例:
import org.apache.struts2.json.JSONUtil;public class JsonToJava { public static void main(String[] args) { try { String s = JSONObject.toString(); Object o = JSONUtil.deserialize(s); Object o1 = ((HashMap)o).get("DATA");//此举将DATA作为对象,得到。 Map map = (Map)o1;//然后强转o1 } catch (Exception e) { e.printStackTrace(System.out); } }}
你需要将json数据解析出来,然后根据数据类型,把数据放入map中
JsonObject 一个Google、的 将json转换为对象的包
java中解析json文件,需要下载json解析包,用JSONUtil.deserialize()就可以了,范例:
import org.apache.struts2.json.JSONUtil; public class JsonToJava { public static void main(String[] args) { try { String s = JSONObject.toString(); Object o = JSONUtil.deserialize(s); Object o1 = ((HashMap)o).get("DATA");//此举将DATA作为对象,得到。 Map map = (Map)o1;//然后强转o1 } catch (Exception e) { e.printStackTrace(System.out); } }}
json怎么转换成Map并遍历
把map转成json的步骤:
1、需要一些jar包:json-lib-2.4-jdk15.jar、ezmorph-1.0.6.jar、commons-logging.jar、commons-lang.jar、commons-collections.jar、commons-beanutils.jar。
2、把Map转换成json, 要使用jsonObject对象:
Map
map = new HashMap
();
map.put("userId", 1001);
map.put("userName", "张三");
map.put("userSex", "男");
JSONObject jsonObject = JSONObject.fromObject(map);
System.out.println(jsonObject);
Java 将一个String 形式的json转化成Map,比如"{\"a\":\"1\",\"b\
hashmap是以键值对(key-value)的格式保存对象的容器, 数组是按顺序一个一个保存对象的容器 你把hashmap转换成数组是想把key转成数组呢还是把value转成数组呢或者key和value组合成的对象转换成数组呢.我把key和value的分别写出来,组合对象的同理...
将一个String 形式的json转化成Map的Java程序如下:
import java.util.HashMap;import java.util.Iterator;import java.util.Map;import org.json.JSONObject;public class FFF { public static void main(String[] args) { String s="{\"a\":\"1\",\"b\":2,\"c\":\"2016-5\"}"; JSONObject jso=new JSONObject(s); Map
m=new HashMap
(); Iterator it = jso.keys(); while (it.hasNext()) { String key = (String) it.next(); Object value = jso.get(key); m.put(key, value); } System.out.println(m.toString()); }}运行结果:
{a=1, b=2, c=2016-5}
android怎么把json转换为hashmap
在升级QQ登录到OAuth2.0时,其返回的是一个json形式的字符串,将其转换成Map
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
或
Gson gson = new Gson();
String json 如下;
{ "ret":0, "msg":"", "nickname":"xxx", "figureurl":"http://qzapp.qlogo.cn/qzapp/100226195/C399C7B2880641627CED3EEF9DEB8E30/30", "figureurl_1":"http://qzapp.qlogo.cn/qzapp/100226195/C399C7B2880641627CED3EEF9DEB8E30/50", "figureurl_2":"http://qzapp.qlogo.cn/qzapp/100226195/C399C7B2880641627CED3EEF9DEB8E30/100", "gender":"xxx", "vip":"0", "level":"0", "is_yellow_year_vip":"0" }
Map infoMap = gson.fromJson(json, new TypeToken
<map
>(){}.getType());
在android中把json转换为hashmap,代码如下:
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import com.wideyou.model.ExpressOrder;
import com.wideyou.warehouse.model.Storage;
public class HelperFunction {
public ExpressOrder ExpressOrderClassCast(JSONObject reserJson){
ExpressOrder expressOrder=new ExpressOrder();
expressOrder.setCid(Integer.parseInt(reserJson.getString("userId")));
expressOrder.setSendPerson(reserJson.getString("sendPerson"));
expressOrder.setSendPhone(reserJson.getString("sendPhone"));
expressOrder.setSendAddress(reserJson.getString("sendAddress"));
expressOrder.setBeginAddress(reserJson.getString("beginAddress"));
expressOrder.setOtherDes(reserJson.getString("otherDes"));
expressOrder.setEndAddress(reserJson.getString("endAddress"));
expressOrder.setReservPerson(reserJson.getString("reservPerson"));
expressOrder.setReservPhone(reserJson.getString("reservPhone"));
expressOrder.setReservAddress(reserJson.getString("reservAddress"));
expressOrder.setPostCode(reserJson.getString("reservAddress"));
expressOrder.setPayId(Integer.parseInt(reserJson.getString("payId")));
return expressOrder;
}
public Storage StorageClassCast(JSONObject reserJson){
Storage storage=new Storage();
storage.setSname(reserJson.getString("sname"));
storage.setCount(Integer.parseInt(reserJson.getString("count")));
return storage;
}
public static int getCid(JSONObject reserJson, boolean isConsumer){
if(isConsumer){
return Integer.parseInt(reserJson.getString("userId"));
}else{
return Integer.parseInt(reserJson.getString("memberId"));
}
}
//map转换为json字符串
public static String hashMapToJson(HashMap map) {
String string = "{";
for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
Entry e = (Entry) it.next();
string += "'" + e.getKey() + "':";
string += "'" + e.getValue() + "',";
}
string = string.substring(0, string.lastIndexOf(","));
string += "}";
return string;
}
public static void JsonObject2HashMap(JSONObject jo, List> rstList) {
for (Iterator keys = jo.keys(); keys.hasNext();) {
try {
String key1 = keys.next();
System.out.println("key1---" + key1 + "------" + jo.get(key1)
+ (jo.get(key1) instanceof JSONObject) + jo.get(key1)
+ (jo.get(key1) instanceof JSONArray));
if (jo.get(key1) instanceof JSONObject) {
JsonObject2HashMap((JSONObject) jo.get(key1), rstList);
continue;
}
if (jo.get(key1) instanceof JSONArray) {
JsonArray2HashMap((JSONArray) jo.get(key1), rstList);
continue;
}
System.out.println("key1:" + key1 + "----------jo.get(key1):"
+ jo.get(key1));
json2HashMap(key1, jo.get(key1), rstList);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
public static void JsonArray2HashMap(JSONArray joArr,
List> rstList) {
for (int i = 0; i < joArr.size(); i++) {
try {
if (joArr.get(i) instanceof JSONObject) {
JsonObject2HashMap((JSONObject) joArr.get(i), rstList);
continue;
}
if (joArr.get(i) instanceof JSONArray) {
JsonArray2HashMap((JSONArray) joArr.get(i), rstList);
continue;
}
System.out.println("Excepton~~~~~");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
public static void json2HashMap(String key, Object value,
List> rstList) {
HashMap map = new HashMap();
map.put(key, value);
rstList.add(map);
}
}
</map
java将 json数组转map
首先你的 [{"key":"1"},{"key":"2"}] 是个 json 数组格式
如果是简单的json 格式, 比如 "{\"key1\":\"1\",\"key2\":\"2\"}"
那么你可以使用 下面的示例:
public static void main(String[] args){ String jsonString = "{\"key1\":\"1\",\"key2\":\"2\"}"; //String str = "[{\"key1\":\"1\"},{\"key2\":\"2\"}]"; Map
map = toMap(jsonString); for (Map.Entry
entry : map.entrySet()){ String key = entry.getKey(); Object value = entry.getValue(); System.out.println(key + ":" + value); } } @SuppressWarnings("unchecked") public static
Map
toMap(String json){ Map
map = new HashMap
(); JSONObject jsonObject = JSONObject.fromObject(json, new JsonConfig()); Iterator
keys = jsonObject.keys(); while (keys.hasNext()){ String key = keys.next(); Object value = jsonObject.get(key); map.put(key, (T) value); } return map; }
执行结果:
你这种数组格式, 转成 map 那么 同名的key 会覆盖的....
java String转json,String转Map,Json转Map
用google的Gson类可以转换成Map类型,需要下载gson-2.3.1.jar,并且包含到你的build Path中,完整的Java程序如下
import java.util.HashMap;import java.util.Map;import com.google.gson.Gson;public class H { public static void main(String[] args) { String data = "{timestamp=1380099, body={\"name\":\"\u6d4b\u8bd5\u5546\u6237\",\"shop_id\":\"123456\"}, cmd=order.list, source=65504, ticket=C34A0D20-45EC-9C26-CAB8-3DA309213671, encrypt=des.v1, secret=123138004534, fields=a|b, version=3.0}"; Gson gson = new Gson(); Map
map = new HashMap
(); map = gson.fromJson(data, map.getClass()); for (Map.Entry
entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } }}运行结果Key = ticket, Value = C34A0D20-45EC-9C26-CAB8-3DA309213671Key = encrypt, Value = des.v1Key = cmd, Value = order.listKey = source, Value = 65504.0Key = secret, Value = 1.23138004528E17Key = body, Value = {name=测试商户, shop_id=123456}Key = fields, Value = a|bKey = version, Value = 3.0Key = timestamp, Value = 1.493114544899E12
java中从服务器上获取的json字符串,怎么存map(integer object)中
如果使用的
net.sf.json
包,可以先用 JSONObject.fromJson(String)转成jsonobject对象,然后使用toBean方法转成map,或者用get去一个个的取。
如果用的jackson包,
private static ObjectMapper mapper = new ObjectMapper();
mapper.readValue(json, Map.class);
那要看你的json数据是什么要的格式,比如javabean实体中包含实体的转换
JSONObject jsonObject = JSONObject.fromObject("你的json数据");
Map
classMap = new HashMap
();
/*如:{"validateMessagesShowId":"_validatorMessage","status":true,"httpstatus":200,"data":{"otherMsg":"","loginCheck":"Y"},"messages":[],"validateMessages":{}}
*/
classMap.put("validateMessages", 你的Javabean实体.class);
classMap.put("data", "你的javabean实体名称.class");
\\ MessagesShow 实体包含 你的javabean实体
/*
public class MessagesShow {
private String validateMessagesShowId;
private boolean status;
private String httpstatus;
private List
messages;
private ValidateMessages validateMessages;
private MessagesData data ;
//set 和 get 方法
}
*/
MessagesShow messages =(MessagesShow) JSONObject.toBean(jsonObject, MessagesShow.class, classMap);