• 个人笔记,json区分后端返回数据需不需要转的问题。


    JSON 与 JS 对象的关系

    很多人搞不清楚 JSON 和 Js 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
    JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
    如:
    1
    var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
    2
    var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

    注:一般后台返回的是js 的json对象,如像第一种形式可直接调用即可,如返回第二种 json 字符串,就需要转成json字符串 常用方法分别为 JSON.parse() 与eval()这两个api。

     

    JSON.parse() 和 eval () 方法的区别

    注:如果后台返回的是非标准的josn字符串 那么Json.parse()方法转换不了,(如果后台说别人都能转换为何你不能,你不是sb吗?这时候就得用到eval()这个方法,他能转换标准的字符串,也能转换非标准的字符串,如果想深入了解可以去看菜鸟教程);

    非标准的JSON字符串: {error: 0, id: 1, time: 1526541587, acc: 0, ref: 0}
    标准的JSON字符串: {"error": "0", "id": "1", "time": "1526541587", "acc": "0", "ref": "0"}

    VM179:1 Uncaught SyntaxError: Unexpected token e in JSON at position 1
    // var str = '{error: 0, id: 1, time: 1526541587, acc: 0, ref: 0}';
       var str = '{"error": "0", "id": "1", "time": "1526541587", "acc": "0", "ref": "0"}';
    // var obj = JSON.parse(str);
    // console.log(obj);
       var obj = eval("("+str+")"); //{error: "0", id: "1", time: "1526541587", acc: "0", ref: "0"}
       console.log(obj);

    JSON 和 JS 对象互转

    要实现从JSON对象转换为JS字符串,使用 JSON.parse() 来自json百度百科

    其实我更觉得这一句应该为:

    要实现从
    JSON字符串转换为js对象,使用 JSON.parse()

    1
    var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}

    要实现从JS对象转换为JSON
    字符串,使用 JSON.parse()

    2
    var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}' 
  • 相关阅读:
    前台开发——处理用户密码登录的修改功能
    前台开发——处理用户收货信息的修改
    Max Sum -- hdu -- 1003
    (深搜)Oil Deposits -- hdu -- 1241
    (博弈 sg入门2)
    (博弈 sg入门)kiki's game -- hdu -- 2147
    (巴什博弈 sg函数入门1) Brave Game -- hdu -- 1846
    (全排列)Ignatius and the Princess II -- HDU -- 1027
    (模拟)Arithmetic Sequence -- HDU -- 5400
    (字符串 键盘转换)Convert QWERTY to Dvorak -- zoj -- 5526
  • 原文地址:https://www.cnblogs.com/xiaobaicai123/p/10570259.html
Copyright © 2020-2023  润新知