`
cuizhilei
  • 浏览: 9309 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JavaScript对象与JSON字符串的相互转换

    博客分类:
  • js
 
阅读更多
JavaScript对象与JSON字符串的相互转换
所属标签: WEB前端 JavaScript
    JSON(JavaScript Object Notation) 是JavaScript编程语言的一个子集。正因JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中。

eval函数 JSON文本转换为对象
    为了将JSON文本转换为对象,可以使用eval函数。eval函数调用JavaScript编辑器。由于JSON是JavaScript的子集,因此编译器将正确的解析文本并产生对象结构。文本必须括在括号中避免产生JavaScript的语法歧义。
var obj = eval('(' + JSONTest + ')');
    eval函数非常快速。它可以编译执行任何JavaScript程序,因此产生了安全性问题。当使用可信任与完善的源代码时才可以使用eval函数。这样可以更安全的解析JSON文本。使用XmlHttp的web应用,页面之间的通讯只允许同源,因此是可以信任的。但这却不是完善的。如果服务器没有严谨的JSON编码,或者没有严格的输入验证,那么可能传送包括危险脚本的无效JSON文本。eval函数将执行恶意的脚本。
JSON解释器 JSON.parse、JSON.stringify
    使用JSON解析器可以防止像eval函数转换JSON文本为对象那样的安全隐患。JSON解析器只能辨识JSON文本,拒绝所有脚本。提供了本地JSON支持的浏览器的JSON解析器将远快于eval函数。
目前,Firefox、Opera、IE8以上版本也提供了本地JSON支持。其中,JSON解释器提供的函数有:JSON.parse、JSON.stringify。
    对于那些并不提供本地JSON支持的浏览器可以引入脚本json2.js,来实现JSON转换功能。json2.js脚本可到https://github.com/douglascrockford/JSON-js/blob/master/json2.js页面下载。
JSON.parse 函数
将JSON文本转换为对象。
JSON.parse(text[, reviver])
参数
text
   必选项。要转换为对象的JSON文本。
reviver
   可选项。该参数是个替换函数。在转换中,遍历的每个节点,都将执行该函数,该函数的返回值将替代转换结果的相应节点值。
JSON.stringify 函数
将对象转换为JSON文本。
JSON.stringify(value[, replacer[, space]])
参数
text
必选项。要转换为JSON文本的对象。
reviver
   可选项。该参数是个替换函数。在转换中,遍历的每个节点,都将执行该函数,该函数的返回值将替代转换结果的相应节点值。
space
   可选项。格式化输出JSON文本缩进的空格数量。如果不提供该参数将不会格式化输出。
参数reviver的委托类型
reviver(key, value)
reviver函数的中的this是当前所遍历到的节点的父节点。当所遍历的是根节点的时候,父节点是个Object对象,根节点是该对象的一个属性,属性名是空字符串。

参数
key
   当父节点是数组Object,key为数组索引,否则key为Object属性名。
value
   节点值。
注:JSON不支持循环数据结构。
JSON.parse、JSON.stringify使用示例
<script type="text/javascript">
function InventoryItem(parm) {
   this.Product = parm.Product
   this.Quantity = parm.Quantity;
   this.Price = parm.Price;
   this.Type = parm.Type;
   this.Total = function() {
      return this.Price * this.Quantity;
   }
}

function Inventory(parm) {
   this.Date = parm.Date;
   this.Item = parm.Item;
   this.Type = parm.Type;
   this.Total = function() {
      var count = 0;
      for (var key in this.Item) {
         count += this.Item[key].Total();
      }
      return count;
   }
}

var inventoryJSONText = "{\"Date\":\"2000-01-01\",\"Item\":[{\"Product\":\"ProductOne\",\"Quantity\":\"10\",\"Price\":\"10\",\"Type\":\"InventoryItem\"},{\"Product\":\"ProductTwo\",\"Quantity\":\"100\",\"Price\":\"20\",\"Type\":\"InventoryItem\"}],\"Type\":\"Inventory\"}";

//将JSON文本转换为对象,并将一般类的实例改成伪类的实例。
var inventoryObject = JSON.parse(inventoryJSONText, function(key, value) {
   var type;
   if (value && typeof value === 'object') {
      type = value.Type;
      if (typeof type === 'string' && typeof window[type] === 'function') {
         return new (window[type])(value);
      }
   }
   return value;
});

//输出转换后对象的信息。
var output = "Product\t\tQuantity\tPrice\tTotal\n";
for (var key in inventoryObject.Item) {
   var item = inventoryObject.Item[key];
   output += item.Product + "\t" + item.Quantity + "\t\t" + item.Price + "\t" + item.Total() + "\n";
}
output += "\t\t\t\t\t" + inventoryObject.Total();
alert(output);

//再将inventoryObject对象转换成JSON文本。
var inventoryJSONTextAgain = JSON.stringify(inventoryObject, null, 3);
alert(inventoryJSONTextAgain);
</script>
分享到:
评论

相关推荐

    java对象转换为json字符串或字符串数组

    除了序列化,`json-lib`还支持反序列化,即将JSON字符串转换回Java对象: ```java Person deserializedPerson = (Person) JSONSerializer.toJava(jsonString); ``` 6. JSONPath和JSONSchema: 在实际应用中,...

    由php对象生成json字符串 把php对象变成json字符串.zip

    总的来说,将PHP对象转换为JSON字符串是通过json_encode()函数完成的,对于对象,可以考虑实现JsonSerializable接口或使用特定选项来控制序列化行为。在实际开发中,还要注意错误处理和编码选项的设置,以确保数据...

    模仿json,根据对象生成json字符串,根据字符串生成对象

    同样以`com.google.gson`为例,我们可以使用`fromJson()`方法将JSON字符串转换回Java对象。在上面的例子中,如果我们已经有一个JSON字符串,可以这样做: ```java String jsonString = "{\"name\":\"Alice\",\"age\...

    net.sf.json.JSONObject实现Object对象与Json字符串的互转

    是开源库Apache Commons Lang中的一个类,它提供了解决Java对象与JSON字符串之间转换的功能。这篇博客文章"net.sf.json.JSONObject实现Object对象与Json字符串的互转"深入探讨了如何使用`JSONObject`来处理这种转换...

    java 对象与json字符串互相转换工具类

    // 将JSON字符串转换为对象 YourClass yourObject = JSON.parseObject(jsonString, YourClass.class); ``` 4. 遇到的常见问题: - **序列化/反序列化的异常**:如果对象的属性包含不可序列化的类型(如`...

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    json字符串转换c++类对象

    在C++编程中,将JSON字符串转换为C++类对象是一项常见的任务,特别是在处理网络通信、数据存储或配置文件时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析...

    利用Google Gson实现JSON字符串和对象之间相互转换

    以下是一个简单的例子,展示如何将JSON字符串转换为Java对象: ```java class User { private String name; private int age; // getters and setters... } String jsonString = "{\"name\":\"John\", \"age\...

    将json字符串转换为对象

    标题提到的“将json字符串转换为对象”,实际上是在指JSON.parse()方法,这个方法在JavaScript中用于将一个合法的JSON字符串转化为JavaScript对象。例如,我们有一个如下的JSON字符串: ```json let jsonString = '...

    json2.js 字符串转转json对象工具

    1. `JSON.parse()`方法用于将一个JSON字符串转换为JavaScript对象。在JSON中,数据被表示为键值对(key-value pairs)的集合,而JavaScript对象正是以这种方式存储数据。例如,如果你有一个JSON字符串`'{"name": ...

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    标题和描述提及的是将JSON字符串转换为Java对象,特别是涉及多层嵌套和List集合的情况。这在处理复杂数据结构时非常常见,比如服务器返回的响应可能包含嵌套的对象和数组。下面我们将详细介绍如何使用Jackson库来...

    json_lib使用实例:java对象与json字符串的互转

    JSON(JavaScript Object...通过其提供的API,我们可以方便地进行JSON字符串与Java对象之间的双向转换,同时还能处理各种复杂的数据结构。在实际开发中,掌握这些知识对于进行Web服务开发、API接口设计等工作至关重要。

    javascript处理json字符串和json对象的类(含示例)

    一、JSON字符串转换为JSON对象 在JavaScript中,可以使用`JSON.parse()`方法将一个JSON格式的字符串转换为JavaScript对象。这个方法接收一个JSON字符串作为参数,返回的是解析后的JavaScript对象。例如: ```...

    js中的json对象和字符串之间的转化

    2. **字符串与JSON对象之间的转化**:JavaScript提供了两个内置函数来实现这种转化:`JSON.stringify()`用于将JavaScript对象转换为JSON字符串,`JSON.parse()`用于将JSON字符串转换回JavaScript对象。 **描述中的...

    js json字符串转对象

    本文主要关注如何将JSON字符串转换为JavaScript对象。 1. **JSON.stringify() 和 JSON.parse()** `JSON.stringify()` 是JavaScript提供的一个内置函数,用于将JavaScript对象转换为JSON字符串。这在需要在网络间...

    androidmap转json字符串、list转json字符串工具类.zip

    本压缩包提供了两个关键功能:将Map对象转换为JSON字符串和将List对象转换为JSON字符串。这两个工具类对于Android开发者来说非常实用,因为它们简化了Java对象与JSON格式之间的互换过程。 首先,让我们详细了解Map...

    python对象转json字符串小工具

    `dumps()`函数将Python对象转化为JSON字符串,而`dump()`则将Python对象写入一个文件对象。 在描述中提到,这个小工具特别关注了Unicode对象的处理。在Python 3中,字符串默认是Unicode编码的,而在JSON规范中,...

    json字符串转化为list泛型

    在Java编程中,我们经常需要将JSON格式的数据转换为Java对象,这通常涉及到将JSON字符串转化为List泛型。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    C语言实现的 json格式字符串与结构体自动相互转化

    反之,将结构体转化为JSON字符串则是将结构体中的数据转换为JSON格式的文本,便于在网络间传递或存储。 关于“反射”这一概念,在许多面向对象的语言中,反射允许程序在运行时检查和修改其自身的结构和行为。在...

Global site tag (gtag.js) - Google Analytics