`
xtiawxf
  • 浏览: 16584 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

迭代修改json格式数据

阅读更多
背景:在运用jquery的treegrid控件时,需要动态展现折叠数据,所以需要每次展开行数据时,将从服务器获取的json数据更新至treegrid的data数据的指定属性值中。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="textml; charset=utf-8" />
<title>json迭代修改</title>
</head>

<body>
<script type="text/javascript" language="javascript">
	var jsonObj = 	[{"id":"1",name:"a1",children:
					  [
						{"id":"1.1",name:"a1.1"},
						{"id":"1.2",name:"a1.2",children:[
							{"id":"1.2.1",name:"a1.2.1"}
							]
						}
					  ]
					 },
					 {"id":"2",name:"a2"}
					];
	/*
	*方法名:	setJsonValue
	*属 性:	json,json格式数据对象,源数据
	*		identifier,标示区分某一行json数据,json格式数据({"name":"","value":""})
	*		data,需要修改属性以及修改后的值,json格式数据({"name":"","value":""})
	*功 能:	根据identifier,确定json行数据,然后修该行指定属性(data["name"])的值(data["value"])
	*返回值:	返回修改后的json对象
	**/
	function setJsonValue(json,identifier,data){
		var item;
		for(var i=0; i<json.length;i++){
			item = json[i];
			if(Object.prototype.toString.apply(item[data["name"]])=="[object Array]" || Object.prototype.toString.apply(item[data["name"]]) == "[object Object]") {
					item[data["name"]]=setJsonValue(item[data["name"]],identifier,data);
			}
			if(item[identifier["name"]]==identifier["value"]){
				item[data["name"]]=data["value"];
				break;
			}
			
		}
		return json
	}
	/*
	*方法名:parseJson
	*属 性:json,json格式数据
	*返回值:无
	*/
	function parseJson(json){
		var item;
		for(var itemname in json){
			item = json[itemname]
			if(Object.prototype.toString.apply(item)=="[object Array]" || Object.prototype.toString.apply(item) == "[object Object]") {
				parseJson(item);
			}else{
				alert("属性:"+itemname+",值:"+item);
			}
		}
	}
	jsonObj = setJsonValue(jsonObj,{"name":"id","value":"2"},{"name":"children","value":[{"id":"2.1",name:"a2.1"}]});
	parseJson(jsonObj)
</script>
</body>
</html>

分享到:
评论

相关推荐

    VC++读取json格式数据(测试可用).rar.rar

    标题提到的“VC++读取json格式数据(测试可用)”显然涉及了使用C++处理JSON数据的实践方法。 JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在C++中,我们通常会借助如nlohmann/...

    VC++读取json格式数据.rar

    本资源“VC++读取json格式数据.rar”显然提供了关于如何在Visual C++(VC++)环境下读取和操作JSON数据的方法。以下是关于这个主题的详细解释: 首先,我们需要了解JSON的基本结构。JSON是一种数据交换格式,支持...

    json_cpp c++解析json数据的包

    一旦你有了`Json::Value`对象,你可以通过成员函数和索引来访问和修改JSON数据。例如,如果你有一个包含键值对的JSON对象,你可以这样做: ```cpp std::string name = root["name"].asString(); int age = root[...

    jQuery解析json格式数据示例

    总之,jQuery提供了强大的功能来处理JSON数据,结合`.each()`遍历方法,我们可以方便地读取、修改和操作JSON对象。同时,利用在线工具,可以进一步优化JSON数据的管理和使用,使开发工作更加高效。在实际项目中,...

    json解析源码,纯c

    在Web服务中,JSON常作为HTTP响应的数据格式。`json-c`可以与HTTP客户端库(如libcurl)结合使用,解析接收到的HTTP响应体中的JSON数据。首先,将HTTP响应体转换为字符串,然后传递给`json_object_from_json_string...

    json是一个C++语言的Json解析程序,提供json解析及构造json数据功能。.zip

    同时,库可能提供迭代器或其他访问方式来遍历和修改解析后的Json数据。 5. **错误处理**:在解析Json时,可能会遇到无效的Json格式,好的Json库会提供适当的错误处理机制,例如抛出异常或返回错误码。开发人员需要...

    json-jar json包

    - JSON数据的遍历:通过迭代器或访问器遍历JSON数组和对象,获取所需数据。 - JSON格式的验证:确保接收到的JSON数据符合预期的格式,避免因数据错误导致的程序异常。 总之,JSON-JAR是一个包含JSON处理功能的Java...

    cpp-QJson将JSON数据映射到QVariant对象的基于Qt的库

    这意味着你可以通过递归或者迭代的方式访问和修改JSON数据的深层结构。 5. **错误检查**:在解析和序列化过程中,QJson库提供了错误检查机制。例如,`QJsonParseError`类可以捕获解析过程中的错误,而`...

    c++解析json

    注意,jsoncpp提供两种解析模式:`Json::Reader`用于简单的解析,而`Json::Value`则提供了更高级的功能,如直接访问和修改JSON数据。在实际开发中,根据需求选择合适的解析方式。 总的来说,C++通过jsoncpp库解析...

    JsonView工具新增应用图标

    2. 打开JSON文件:一旦安装完成,用户可以通过JsonView打开包含JSON数据的文件,通常这些文件扩展名为`.json`。 3. 数据查看:JsonView会将JSON数据以树形结构展示,方便用户逐层展开查看内容,也可以进行搜索和筛选...

    cJSON类,C++封装对JSON格式字符串的操作,解析,组合字符串.zip

    例如,它可以用于接收HTTP请求的JSON数据,解析后存储到数据库,或者从数据库读取数据,转换成JSON响应给客户端。总之,封装cJSON类是C++中高效处理JSON的一个重要工具,能够帮助开发者专注于业务逻辑,而不是JSON的...

    json需要的jar包

    在实际应用中,开发者会使用这些库的API来解析JSON字符串,创建JSON对象,读取和修改JSON数据,以及将Java对象转换为JSON格式。例如,使用`JSONObject`和`JSONArray`类可以方便地处理JSON数据结构,而`JsonWriter`和...

    apache json解析开源项目

    在使用过程中,可能会遇到解析错误或格式不正确的JSON数据。Apache JSON库提供了异常处理机制,如`JSONException`,帮助开发者捕获并解决这些问题。为了方便调试,可以使用`toString()`方法打印JSON对象,以便检查...

    json_example.txt

    `jsoncpp`是一个强大的C++库,用于解析和生成JSON数据,它提供了一套完整的API来操作JSON对象,包括读取、写入、查询和修改JSON数据。 #### JSONcpp的使用 在使用`jsoncpp`之前,首先需要下载并安装这个库。`...

    Newtonsoft.Json.dll 4.5.0.0 版本

    4. **LINQ to JSON**:Json.Linq命名空间提供了JObject、JArray等类,使得开发者可以通过LINQ查询语言直接操作JSON对象,进行添加、删除、修改等操作,使得处理JSON数据就像操作.NET集合一样简单。 5. **高性能**:...

    JSON-handle_0.6.1

    8. **功能增强**:除了基本的解析和序列化,JSON-handle可能还提供了一些额外的功能,比如格式化JSON输出,验证JSON结构是否符合特定规范,或者提供JSONPath支持,允许用户按路径查找和提取JSON数据中的特定部分。...

    Gdata Json 解析工具

    3. **遍历JSON对象**:一旦解析了JSON数据,你可以使用迭代器或者直接访问键来遍历JSON对象。例如,对于一个JSON对象,你可以获取每个键,并用对应的值进行操作;对于JSON数组,你可以访问其元素,每个元素可能是一...

    org.json框架

    `org.json`框架由Mozilla Foundation提供,它包含了一系列的类和接口,如`JSONObject`、`JSONArray`、`JSONString`等,这些类和接口可以帮助开发者方便地在Java程序中创建、解析和修改JSON数据。 1. **JSONObject**...

    遍历多级树状json获得父子节点值

    如果我们想找到名为"孙子节点2"的年龄,我们可以调用`traverse_json`函数,传入JSON数据和目标键: ```python data = {...} # 前面的JSON数据 traverse_json(data, target_key="age") ``` 这个例子展示了如何通过...

    net.sf.json.JSONObject Jar包下载

    这个类提供了丰富的API,允许开发者创建、读取和修改JSON对象。例如,你可以通过`put()`方法添加键值对,通过`get()`方法获取特定键对应的值,通过`opt()`方法安全地尝试获取键值,即使键不存在也不会抛出异常。 ...

Global site tag (gtag.js) - Google Analytics