zoukankan      html  css  js  c++  java
  • json和字符串/数组/集合的互相转换の神操作总结

    一:前端字符串转JSON的4种方式

    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中当字符串中含有换行( )时,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。

      

  • 相关阅读:
    update语句条件判断更新
    添加ll命令
    在php cli下可以使用 STDIN 来实现标准输入
    windows修改PowerShell(命令提示符)默认中文编码方式
    命令创建控制器
    windows系统关闭某个端口的服务(以443端口为例子)
    unable to create ...erroractionpreference....
    【抓包工具】使用Fiddler关于“由于目标计算机积极拒绝,无法连接。”的解决方案
    切换国内镜像:Content-Length mismatch, received 431737 bytes out of the expected 760836
    匹配函数函数备注
  • 原文地址:https://www.cnblogs.com/tingbogiu/p/5796355.html
Copyright © 2011-2022 走看看