- JSONObject jsonObject = new JSONObject();
- jsonObject.put("json", upKbmsKnowledgeList); //往json对象中添加数据
- String jsonString =jsonObject.getString("json");
- String sTotalString = "{/"status/":0,/"info/":/"\u7b7e\u540d\u9519\u8bef/"}";
- /**根据返回成功的信息,取出里面的字符串转换为json进行取值*/
- JSONObject obj = JSONObject.fromObject(sTotalString);
- /**状态**/
- String status ="";
- String info ="";
- /*转换为json对象后,取出值**/
- if(sTotalString.indexOf("status")>0){
- status = obj.getString("status");
- }
- if(sTotalString.indexOf("info")>0){
- info = obj.getString("info");
- }
二:
前提是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格式
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即可
三:
第一种方式:
使用js函数eval();
testJson=eval(testJson);是错误的转换方式。
正确的转换方式需要加(): testJson = eval("(" + testJson + ")");
eval()的速度非常快,但是他可以编译以及执行任何javaScript程序,所以会存在安全问题。在使用eval()。来源必须是值得信赖的。需要使用更安全的json解析器。在服务器不严格的编码在json或者如果不严格验证的输入,就有可能提供无效的json或者载有危险的脚本,在eval()中执行脚本,释放恶意代码。
js代码:
- function ConvertToJsonForJs() {
- //var testJson = "{ name: '小强', age: 16 }";(支持)
- //var testJson = "{ 'name': '小强', 'age': 16 }";(支持)
- var testJson = '{ "name": "小强", "age": 16 }';
- //testJson=eval(testJson);//错误的转换方式
- testJson = eval("(" + testJson + ")");
- alert(testJson.name);
- }
第二种方式使用jquery.parseJSON()方法对json的格式要求比较高,必须符合json格式
jquery.parseJSON()
js:代码
- function ConvertToJsonForJq() {
- var testJson = '{ "name": "小强", "age": 16 }';
- //不知道
- //'{ name: "小强", age: 16 }' (name 没有使用双引号包裹)
- //"{ 'name': "小强", 'age': 16 }"(name使用单引号)
- testJson = $.parseJSON(testJson);
- alert(testJson.name);
- }