js输出json数据

JavaScript014

js输出json数据,第1张

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

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

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

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

用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器 返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明。 

这里首先给出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:'商洛市'} 

]

}" 

var dataObj=eval("("+data+")")//转换为json对象

alert(dataObj.root.length+"个对象")

for(var i=0i<dataObj.root.lengthi++){

    var obj=dataObj.root[i]

    alert(obj.Name+"--"+obj.value)

}

由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语 句(statement)来执行。

第二种解析方式就是使用Function对象来完成,它的典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析

var json='{"name":"CJ","age":18}'

data =(new Function("","return "+json))()

此时的data就是一个会解析成一个 json对象了.

JSON.stringify() 是将 JavaScript 对象转换为 JSON 的规范方法。有许多 JavaScript 框架在内部都使用了 JSON.stringify() ,比如 Express 框架的 res.json() 和 Axios body 序列化。

但是,默认情况下, JSON.stringify() 输出的 JSON 格式,不带空格或颜色。在后面,我们将使用一个常用的 npm 包来丰富输出数据的色彩。

JSON.stringify() 基本用法如下:

可以看到,我们使用 JSON.stringify() 输出的内容更具可读性。

你也可以传入一个 "\t" 制表符间距,格式化输出的数据。

JSON.stringify 的第三个参数用于控制间距。正是它提供了漂亮的字符串输出。

它允许两种类型的参数: Number 和 String 。

如果 Space 是一个 Number 类型,则表示 JSON.stringify 将在每个键之前放置的相应的空格数。可以使用 0 到 10 之间的任意数字作为缩进。

或者,可以使用字符串作为缩进。最多允许10个字符。如果您尝试传递超过10个字符,它将只使用前10个字符。

对于不直接调用 JSON.stringify() 的框架,通常有一个设置 spaces 参数的选项。例如,Express 有一个全局 'json spaces' 选项 ,允许您为所有 res.json() 调用设置 spaces 。

Axios 没有设置 JSON 格式的 显式选项 ,但您可以使用 transformRequest 选项 自行处理 JSON 序列化。关键语法如下:

Prettyjson 以 YAML 样式格式化 JSON 数据。Prettyjson 仅在 CLI 上工作,如果将 Prettyjson 输出作为 HTTP 响应发送,则无法获得颜色。

下面是使用 Prettyjson 从 Node.js 打印 JSON 的示例:

效果如下:

您应该使用以上这类方法来使你想要突出显示的数据以提高可读性。

这里我们额外在说一下 JSON.stringify 的第二个参数 replacer ,我们可以使用它来转换结果。

它允许两种类型的参数: Array 和 Function 。

我们为每一项调用一次 function ,你也可以循环每一项,并在每次传递时使用函数中定义的逻辑进行操作。

下面是一个示例,我跳过了值不是字符串的属性。换句话说,我只想显示值为数字的项。