js实现json格式化,以及json校验工具的简单实现

时间: 2018-01-29阅读: 4324标签: json

 jsON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 易于人阅读和编写,同时也易于机器解析和生成。 XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在js中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。


一.json结构及形式

结构1:

  “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

对应的形式为:

  对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

结构2:

  值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

对应的形式为:

  数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

[
    {
        key1:value1,
        key2:value2 
    },
    {
         key3:value3,
         key4:value4   
    }
]


二.json字符串转化为json对象

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。字符串(string)与C或者Java的字符串非常相似。

对应的形式:

var json_text = "{'book':{'name':'JAVA编程','author':['Liu','Xu']},'num':222}";

字符串json转化json对象有三种方式:


1.通过eval( ) 方法将字符串直接转化为JSON对象 并获得元素的值。

<script type="text/javascript">
    window.onload = function(){
       var json_text = "{'book':{'name':'JAVA编程','author':['Liu','Xu']},'num':222}";
       //使用eval()将字符串转换为对象
       var json_obj = eval("("+ json_text +")");
       //访问 book-name
       document.write(json_obj.book.name);
       //访问 book-author-Xu
       document.write(json_obj.book.author[1]);
    } 
  </script>

注意:"()"运算符


2.new Function形式

<script type="text/javascript">
    window.onload = function(){
       var json_text = "{'book':{'name':'JAVA编程','author':['Liu','Xu']},'num':222}";
       //用new Function将字符串转换为对象
       var json_obj = (new Function("return" + json_text))();
       //访问 book-name
       document.write(json_obj.book.name);
       //访问 book-author-Xu
       document.write(json_obj.book.author[1]);
    } 
  </script>


3.使用全局的JSON对象

<script type="text/javascript">
    window.onload = function(){
       var json_text = '{"book":"js"}';
       //用全局JSON将字符串json转换为json对象
       var json_obj = JSON.parse(json_text);
       //访问 book-name
       document.write(json_obj.book);
       //访问 book-author-Xu
       //document.write(json_obj.book.author[1]);
    } 
  </script>


目前IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法。注意:'{"book":"js"}'; 里面的属性需要用双引号引起来,才能解析,否则会失败。


三.json校验格式化工具简单实现

做了一个比较简单的json格式化工具,效果如下:


代码分析:

<body> 
  <textarea id="content_value">
  </textarea>
  <input type="button" value="格式化" onclick="check()">
  <textarea id="output_value">
  </textarea>
</body> 
<script type="text/javascript">
function check(){
  var text_value = document.getElementById('content_value').value;
  if(text_value == ""){
     alert("不能为空");  
     return false;
  } else {
        var res="";
        for(var i=0,j=0,k=0,ii,ele;i<text_value.length;i++)
        {//k:缩进,j:""个数
            ele=text_value.charAt(i);
            if(j%2==0&&ele=="}")
            {
                k--;                
                for(ii=0;ii<k;ii++) ele="    "+ele;
                ele="\n"+ele;
            }
            else if(j%2==0&&ele=="{")
            {
                ele+="\n";
                k++;     
                debugger;       
                for(ii=0;ii<k;ii++) ele+="    ";
            }
            else if(j%2==0&&ele==",")
            {
                ele+="\n";
                for(ii=0;ii<k;ii++) ele+="    ";
            }
            else if(ele=="\"") j++;
            res+=ele;        
        }
      document.getElementById('output_value').value = res;
  }
}
</script>


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: https://www.fly63.com/article/detial/404

解决IE8下JSON.stringify()自动将中文转译成unicode的方法

在IE8下JSON.stringify()自动将中文转译为unicode编码,原本选择的中文字符,传到后台变为了unicode编码,即u****的形式。查找资料后发现,与标准的JSON.stringify()不同,IE8内置的JSON.stringify()会自动将编码从utf-8转为unicode编码,导致出现这种类似于乱码的情况。

JSON.parse 三种实现方式

近日在翻红宝书,看到 JSON 那一章节,忽然想到:“如何用 JS 实现 JSON.parse?”带着这个疑问,我找到了 JSON 之父 Douglas Crockford 写的 ployfill,里面提供了三种实现方式,下面我们逐一来分析。

含有function的JSON对象转换字符串与反转

因为对象转为JSON时JSON.stringify()会把function过滤掉,那么我们就把function转为字符串在去处理就能够达到要求了,json转回对象的时候因为function都被处理成字符串了

js中Json相关知识

JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。JSON与JS对象互转要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法, 要实现从JS对象转换为JSON字符串,使用 JSON.stringify()

Js把CSV与Excel转为Json

有两个 JavaScript 插件可用于读取和处理 CSV 和 Excel 文件,之后仅对自己的脚本进行编码即可。CSV 表示 :用逗号分隔值,这是一种文件格式,用于存储表格数据,如电子表格或数据库等

Js中json对象与json字符串相互转换的几种方式

使用JSON.stringify()方法进行转换,JSON字符串转化为JSON对象使用 eval() 转换时需要在 json 字符外包裹一对小括号。使用JSON.parse()方法进行转换ie8(兼容模式)、ie7、ie6 不要使用此方法。

如何替换json对象中的key

看到标题你可能会想,如此简单的问题值得去探究吗?如果我有一个json object,只需下面简单的几行代码就可以完成:是的,没错!以上代码可以很好地完成工作。

package.json文件介绍

每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息。npm install命令根据这个配置文件,自动下载所需的模块。

百度JSON LD结构化数据代码分享

百度JSON LD结构化数据代码分享,搞外贸网站,企业网站这么就,对谷歌的 schema 结构化数据比较熟悉,但是对百度的结构化数据就了解太少了

json与jsonp的使用

在ajax中 JSON用来解决数据交换问题,而JSONP来实现跨域。备注:跨域也可以通过服务器端代理来解决;理解:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!