1,eval方式解析,恐怕这是最早的解析方式了。
function strToJson(str){ var json = eval(\'(\' + str + \')\'); return json; }
2,new Function形式,比较怪异哦。
function strToJson(str){ var json = (new Function("return " + str))(); return json; }
IE6/7中当字符串中含有换行(\n)时,new Function不能解析,但eval却可以。
3,使用全局的JSON对象。
function strToJson(str){ return JSON.parse(str); }
目前IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法。
使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下
var str = \'{name:"jack"}\'; var obj = JSON.parse(str); // --> parse error
name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。
4,Jquery插件支持的转换方式
$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象
二.Java中字符串转JSON格式
1.使用JSONObject类的构造方法
public class Demo { public static void main(String[] args) throws Exception { String str = "{\"a\":\"b\", \"c\":\"d\"}"; JSONObject a = new JSONObject(str); System.out.println(a); // {"c":"d","a":"b"} System.out.println(a.get("c")); // d } }
2.使用JSONObject的fromObject(jsonstr)方法
import net.sf.json.*; JSONObject jsStr = JSONObject.fromObject(params); //将字符串{“id”:1} int jsID = Integer.parseInt(jsStr.getString("id"));//获取id的值
三.Java中字符串转JSON格式数组并遍历
//当需要把一串字符串转成一个json 数组 ,并遍历其中的内容时。 //首页导入 net.sf.json.JSONArray和net.sf.json.JSONObject 两个jar 包 String str = "[{name:\'a\',value:\'aa\'},{name:\'b\',value:\'bb\'},{name:\'c\',value:\'cc\'},{name:\'d\',value:\'dd\'}]" ; // 一个未转化的字符串 JSONArray json = JSONArray.fromObject(str ); // 首先把字符串转成 JSONArray 对象 if(json.size()>0){ for(int i=0;i<json.size();i++){ JSONObject job = json.getJSONObject(i); // 遍历 jsonarray 数组,把每一个对象转成 json 对象 System.out.println(job.get("name")+"=") ; // 得到 每个对象中的属性值 } }
四.Java中字符串转JSON格式的集合类型操作
map转string
Map<String, String> map=new HashMap<String, String>(); map.put("name", "思思博士"); map.put("age","25"); JSONObject jsonObject=JSONObject.fromObject(map); String res=jsonObject.toString(); System.out.println(res);
结果:{"age":"25","name":"思思博士"}
list转string
List<String> list=new ArrayList<String>(); list.add("中华"); list.add("人民"); list.add("*"); JSONArray jsonArray=JSONArray.fromObject(list); String res=jsonArray.toString(); System.out.println(res);
结果:["中华","人民","*"]
string转map
String res="{\"age\":\"25\",\"name\":\"思思博士\"}"; //或者这样 //res="{\'age\':\'25\',\'name\':\'思思博士\'}"; JSONObject jsonObject=JSONObject.fromObject(res); Map<String,String> map = (HashMap<String,String>) JSONObject.toBean(jsonObject, HashMap.class); System.out.println(map); System.out.println(map.size()); System.out.println(map.get("name")); System.out.println(map.getClass().getName());
结果:
{name=思思博士, age=25}
2
思思博士
java.util.HashMap
String 转成我们的自定义类
package json; public class UserBean { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
String userS = "{\'name\':\'思思博士\',\'age\':\'25\'}"; JSONObject obj = JSONObject.fromObject(userS); UserBean userBean = (UserBean) JSONObject.toBean(obj, UserBean.class); System.out.println(userBean.getName());
字符串转换成数组(原文是转换成list,自己试了一下,不对,这些都是json工具类的扩展,不一定飞非要用,不过为了显得牛X,还是多装点吧)
String arrayString="[\'a\',\'b\',\'ccc\']"; JSONArray jsonArray=JSONArray.fromObject(arrayString); Object[] arr=jsonArray.toArray(); System.out.println(arr.length); System.out.println(arr[2]);
结果: 3 ccc
一,前端JSON转字符串or解析JSON格式数据
var a={"name":"tom","sex":"男","age":"24"}; var b=\'{"name":"Mike","sex":"女","age":"29"}\'; var aToStr=JSON.stringify(a); var bToObj=JSON.parse(b); alert(typeof(aToStr)); //string alert(typeof(bToObj));//object JSON.stringify()
1>jQuery插件支持的转换方式:
$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象
2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:
JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json对符串
注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。
3>Javascript支持的转换方式:
eval(\'(\' + jsonstr + \')\'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。
4>JSON官方的转换方式:
http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;
可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。