前提是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);
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"}