zoukankan      html  css  js  c++  java
  • 关于数据解析

    创建包含 JSON 语法的 JavaScript 字符串:

    var txt = '{ "employees" : [' +'{ "firstName":"John" , "lastName":"Doe" },' +'{ "firstName":"Anna" , "lastName":"Smith" },' +'{ "firstName":"Peter" , "lastName":"Jones" } ]}';

     

    由于 JSON 语法是 JavaScript 语法的子集JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

    eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

    var obj = eval ("(" + txt + ")");

     

    历程:

    <h2>Create Object from JSON String</h2>
    <p>
    First Name: <span id="fname"></span><br> 
    Last Name: <span id="lname"></span><br> 
    </p> 
    <script>
    var txt = '{"employees":[' +
    '{"firstName":"John","lastName":"Doe" },' +
    '{"firstName":"Anna","lastName":"Smith" },' +
    '{"firstName":"Peter","lastName":"Jones" }]}';
    
    var obj = eval ("(" + txt + ")");//
    
    document.getElementById("fname").innerHTML=obj.employees[1].firstName 
    document.getElementById("lname").innerHTML=obj.employees[1].lastName 
    </script>

     

     

    JSON.parse(text, reviver)

    text  必需。 一个有效的 JSON 字符串。

    reviver

    可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。 对于每个成员,会发生以下情况:

    如果 reviver 返回一个有效值,则成员值将替换为转换后的值。

    如果 reviver 返回它接收的相同值,则不修改成员值。

    如果 reviver 返回 null 或 undefined,则删除成员。

    parse用于从一个字符串中解析出json对象,[使用 JSON.parse 将 JSON 字符串转换为对象]

    cankao:http://blog.csdn.net/lowkeysk/article/details/8175195

    var str = '{"name":"huangxiaojian","age":"23"}'

    结果:

    JSON.parse(str)

     Object

    • age"23"
    • name"huangxiaojian"
    • __proto__: Object

    注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。

     

    stringify()用于从一个对象解析出字符串,如

    var a = {a:1,b:2}

    结果:

    JSON.stringify(a)

    "{"a":1,"b":2}"

     

     

    <h2>Create Object from JSON String</h2>
    <p>
    First Name: <span id="fname"></span><br> 
    Last Name: <span id="lname"></span><br> 
    </p> 
    <script>
    var txt = '{"employees":[' +
    '{"firstName":"John","lastName":"Doe" },' +
    '{"firstName":"Anna","lastName":"Smith" },' +
    '{"firstName":"Peter","lastName":"Jones" }]}';
    
    obj = JSON.parse(txt);//
    
    document.getElementById("fname").innerHTML=obj.employees[1].firstName 
    document.getElementById("lname").innerHTML=obj.employees[1].lastName 
    </script>

    JSONP 的知识[JSON with Padding]:是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据

    为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略

    同源策略,它是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript 的浏览器都会使用这个策略。

     

    首先给出JSON字符串集,字符串集如下:
    
    代码如下:
    var data=" 
    { 
    root: 
    [ 
    {name:'1',value:'0'}, 
    {name:'6101',value:'北京市'}, 
    {name:'6102',value:'天津市'}, 
    {name:'6103',value:'上海市'}, 
    {name:'6104',value:'重庆市'}, 
    {name:'6105',value:'渭南市'}, 
    {name:'6106',value:'延安市'}, 
    {name:'6107',value:'汉中市'}, 
    {name:'6108',value:'榆林市'}, 
    {name:'6109',value:'安康市'}, 
    {name:'6110',value:'商洛市'} 
    ]
    }"; 

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:

    1.一种为使用eval()函数。

    2. 使用Function对象来进行返回解析。

     

    使用

    使用eval函数来解析,并且使用jquery的each方法来遍历

    jquery请求后返回的结果是json对象

    参考:http://www.cnblogs.com/myjavawork/archive/2011/03/10/1979279.html

     

    http://www.educity.cn/wenda/195035.html

    服务器返回json字符串后,在jquery里怎么无法调用啊。怎么转换成对象?

    服务器返回的字符串是:{"address":"china","name":"abc"}

     

     

    我用jquery的post:

    $.post("http://localhost:8080/testjquery/ok/testaction",function(data){

    alert(data); //弹出:{&quot;address&quot;:&quot;china&quot;,&quot;name&quot;:&quot;abc&quot;}

    alert(data.address); //没有显示,弹出undefine

    },"text");

    }

     

    就是客户端接收到服务器返回的json字符串后,怎么转换成js的json对象,好通过对象.的方式访问数据。

    先用js的eval函数将data转为对象 

    你返回的数据根本就不是json数据,Jquery里有个方法可以返回json类型数据,或者你在$.post时指定返回类型为json类型

  • 相关阅读:
    extjs 小总结
    button 带有自动提交功能。
    跑马灯效果 extjs
    ExtJs之Ext.data.Store
    dojochina ext .rar
    后台得到extjs中gridpanel选中行的某个值
    关于JavaScript“跨域”问题的总结
    Eclipse+php插件+Xdebug搭建PHP完美开发/调试环境指南
    [修补 Patch] 重命名上传文件的解决办法
    容器Collection_2
  • 原文地址:https://www.cnblogs.com/xiaopihai988/p/4567875.html
Copyright © 2011-2022 走看看