Json,String,Map之间的转换

前提是String的格式是map或json类型的

String 转Json

JSONObject  jasonObject = JSONObject.fromObject(str);

String 转Map

JSONObject  jasonObject = JSONObject.fromObject(str); Map map = (Map)jasonObject;

在网页之间传递数据出现中文乱码解决方案:

例如请求接口返回一个map或json数据,包含中文

1,先将map或json转成string格式,如果是map类型的,先转成json  JSONObject json=new JSONObject(map); json.toJSONString();转成string格式(此处经试验错误,不知是否为jdk版本问题

2,利用URLEncoder.encoder(str,"UTF-8")或"GBK"对string加密处理,发送加密后的str

3,在接受端,收到str后,URLDecoder.decoder(str,"UTF-8")解密成正常str,一般要转成json需要去掉开始结尾的引号,str=str.substring(1,str.length()-1),再用JSONObject.formObject(str)将str转成json;之后需要转map,Map map = (Map)json即可

   map转为json的方式为:

JSONObject jsonObject = JSONObject.fromMap(productMap);  

    或  JSONObject jsonObject = JSONObject.fromObject(productMap);


map转为json的转换:


AAction中在session中存放了一个map<String,Object>,跳转到a.jsp,a.jsp通过form提交到BAction,BAction可从session中获得map值。

但是由于session是存放在tomcat的memcached中的,存放大对象会影响用户使用,同时,如果将map放到request中,通过hidden传递,页面之间传递map有问题。

故想到一个解决方案是将map转为json,存储到request中,a.jsp中写入hidden,最后在BAction中获取json,转为map即可

 

    map转为json的方式为:

 JSONObject jsonObject = JSONObject.fromMap(productMap);  

    或

    JSONObject jsonObject = JSONObject.fromObject(productMap);

 

    json转为map的方式为:

    String json = request.getPrarameter("product");//从hidden里面获得json串

ObjectMapper mapper = new ObjectMapper();  

Map<String,Object> productMap = mapper.readValue(json);//转成map  


public static void main(String[] args) {
String b = "{'s':'d'}";
String a = "{'PayPal key2':'PayPal value2','PayPal key1':'PayPal value1','PayPal key3':'PayPal value3','PayPal key4':'PayPal value4'}";
JSONObject  jasonObject = JSONObject.fromObject(a);
Map map = (Map)jasonObject;
System.out.println("jasonObject:"+jasonObject+" ,map:"+map);

JSONObject json = JSONObject.fromObject(map);
String jm = json.toString();
System.out.println("json:"+json+" ,jm:"+jm);

}

输出结果:

jasonObject:{"PayPal key2":"PayPal value2","PayPal key1":"PayPal value1","PayPal key3":"PayPal value3","PayPal key4":"PayPal value4"} ,

map:{"PayPal key2":"PayPal value2","PayPal key1":"PayPal value1","PayPal key3":"PayPal value3","PayPal key4":"PayPal value4"}
json:{"PayPal key2":"PayPal value2","PayPal key1":"PayPal value1","PayPal key3":"PayPal value3","PayPal key4":"PayPal value4"} ,

jm:{"PayPal key2":"PayPal value2","PayPal key1":"PayPal value1","PayPal key3":"PayPal value3","PayPal key4":"PayPal value4"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值