基本从事web开发的人应该没有不熟悉Douglas Crockford的。这位鼎鼎有名的人曾经是Yahoo高级js架构师,现在是Paypal的高级js架构师。它创造了大名鼎鼎的json数据类型,从而让web世界能以一种比xml格式更精简又不失可读性的类型来传播数据,他照片如下(中间高大有气质者):

 

 

他创造了JSONLint ,今天我们这里就简单介绍下。

因为不少同事,当他们比如跑java单元测试或者别的什么,有时候经常打印出来一个json字符串,但是这个json字符串都是一字排开的,十分难以阅读,尤其想知道这个payload的逻辑关系并且想要进一步处理的前端开发人员。

 

比如像下面这一个jsonPayload:

 
  
  1. {"result":"OK","type":"MASTERDETAIL","displaytables":[{"name":"Payment Details for Payment Handle : BO-Nitz1-5678912340_12345_69 or Order ID : BO-Nitz1-69","columns":["OrderDate","LastUpdate","Order","Invoice","PaymentHandle","Status","Reserved","Captured","Canceled","Refunded","Client","ClientReqID","Cookie","PPayID"],"rows":[["2012-08-23","2012-08-23","BO-Nitz1-69","567891234X069","BO-Nitz1-5678912340_12345_69","RESERVED","30","0","0","0","BO-CART","BO-CART5678912340_691","{\"reDLPTransactions\":{\"AUTH1345768366239\":{\"transactionType\":\"AUTH\",\"timeStamp\":\"Thu Aug 23 17:32:46 PDT 2012\",\"mopTypeCd\":\"VI\",\"reqId\":\"630001301505\",\"origReqId\":\"\",\"ordId\":\"567891234X069\",\"userId\":\"BO-Nitz1-69\",\"actCd\":\"OA\",\"statCd\":\"APPROVE\",\"rspCd\":\"100\",\"rspDt\":\"2012-08-23\",\"rspTm\":\"17:32:55\",\"rspAuthNum\":\"12345\",\"rspAvsCd\":\"Y\",\"rspSecCd\":\"M\",\"divNum\":\"FDSDIV\",\"amt\":\"3000\",\"currencyCd\":\"USD\",\"reqTypeCd\":\"S\",\"tdsXid\":\"3838393030323833353336313630303732303932\",\"tdsCavv\":\"0800020945089473704895114708940000000000\",\"sKeyId\":\"2\"}}}","8a7263a8395550a80139560b9fa00004"],[["Mod Date","Trans","State","Client","Order","Invoice","PiHash","Amount","ReasonCode","PaymentHandle","Plugin","Endpoint","Req Start","Req End","Secret Sauce","ClientReqID","PMID","TestMode","Cr1","Cr2","Cr3","Cr4","IdCheck","AVS","CreateDate","Plugin Start","Plugin End","GW Start","GW End","RedoReqID","PReqID","PPayID"]],["2012-08-23","PayDoBeforeShipping","SUCCESS","BO-CART","BO-Nitz1-69","567891234X069","PIH.pangpidb.VISA.CREDITCARD.30000924.2227","30","A101","BO-Nitz1-5678912340_12345_69","PaymentReDLPPlugin","FDSDIV","2012-08-23 17:32:45.92","2012-08-23 17:32:46.24","{\"transactionType\":\"AUTH\",\"timeStamp\":\"Thu Aug 23 17:32:46 PDT 2012\",\"mopTypeCd\":\"VI\",\"reqId\":\"630001301505\",\"origReqId\":\"\",\"ordId\":\"567891234X069\",\"userId\":\"BO-Nitz1-69\",\"actCd\":\"OA\",\"statCd\":\"APPROVE\",\"rspCd\":\"100\",\"rspDt\":\"2012-08-23\",\"rspTm\":\"17:32:55\",\"rspAuthNum\":\"12345\",\"rspAvsCd\":\"Y\",\"rspSecCd\":\"M\",\"divNum\":\"FDSDIV\",\"amt\":\"3000\",\"currencyCd\":\"USD\",\"reqTypeCd\":\"S\",\"tdsXid\":\"3838393030323833353336313630303732303932\",\"tdsCavv\":\"0800020945089473704895114708940000000000\",\"sKeyId\":\"2\"}","BO-CART5678912340_691","VISA","N","201604","XXX","Credential 3","Credential 4","05;88900283536160072092;CAACCUUIlHNwSJURRwiUAAAAAAA=","{null}","2012-08-23","2012-08-23 17:32:46.05","2012-08-23 17:32:46.239","2012-08-23 17:32:46.051","2012-08-23 17:32:46.238","{null}","8a7263a8395550a80139560b9fa10005","8a7263a8395550a80139560b9fa00004"]]}],"errorMessages":null

那么怎么才能快速让其变得有可读性并且校验这个json是否合法呢?这时候我们就需要由JSON之父创造的JSONLint了:

去以下网站:http://jsonlint.com/

 

我们只需要吧我们待校验的格式化之前的jsonPayload粘贴到文本框中:

然后点击下面的"Validate" 按钮,则会出现一个格式化之后的jsonPayload,并且最下面有校验结果看这个json是否合法。

 

 

 

值得一提的是,他还开发了另外一个姊妹工具,JSLint,可以用来格式化和校验原生的ECMAScript的内容了,可惜不能校验一些js框架比如Ext-js的代码:

我这里也奉献上链接:http://www.jslint.com