JSON类型对象,最简单了,就是键值对,key:value、key:value、一直不停地key:value下去,层层嵌套,理论上多少层都可以,只要你喜欢。

可是,每次应用JSON,我都心烦意乱,甚至吓到面无人色。何哉?不懂咯,没有真正理解咯,拿到一个JSON对象,不知道如何去使用它,如何去读取里面的数据。

只能够一点一点地记录一些心得,期待量变达成质变,化蛹成蝶,肩胛骨处长出一对翅膀来。

1、JS里面使用

1)用key直接访问对应的value

比如:

var jsonobj ={"total":106,"rows":[{},{},{}.....]}
alert(jsonobj.total);

2)遍历key

var smsTypeDesc = {"4":"回访短信","3":"邮件短信","aa":"测试短信"};
function EnumaKey(){
for(var key in smsTypeDesc){
alert(key);
}
}
function GetVal(){
var key = prompt("请输入要查询的key","4");
if("undefined"==typeof(smsTypeDesc)) return;
if("undefined"==typeof(smsTypeDesc[key])){
alert("输入的key:"+key+", 在json对象中不存在!");
return;
}
alert("您输入的key是:"+key + ",该key所对应的值是:"+smsTypeDesc[key]);
}
function GetValByKey(){
alert(smsTypeDesc.aa);
}

本例子摘自 http://blog.csdn.net/love__coder/article/details/7532616

3、提交或获取服务器端的JSON数据

$.ajax({
url: "/api/customview/SetTags?account=" + _index_account,
data: JSON.stringify(effectRow),
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
_dg.datagrid('acceptChanges');
if (data == true) {
if (setTagsCallback != null) setTagsCallback();
alert("OK");
} else {
alert("failed");
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus + ": " + errorThrown);
}
});

2、.NET里使用

.NET中操作JSON,非newtonsoft.json莫属。

newtonsoft.json里面的类型,目前来看,有以下类型:

JObject

用于操作JSON对象
JArray
 用语操作JSON数组
JValue
 表示数组中的值
JProperty
 表示对象中的属性,以"key/value"形式
JToken
 用于存放Linq to JSON查询后的结果

参考文章:http://www.cnblogs.com/usharei/archive/2012/04/24/2467578.html

有代码有J8:

[csharp] view plaincopy
  1. using Newtonsoft.Json;
  2. JObject json = ...
  3. JToken[] jps = json["records"][0].ToArray();
  4. List<ItemInfo> cols = json["columns"].ToObject<List<ItemInfo>>();
  5. ……
  6. JArray array = new JArray();
  7. array.Add(data);
  8. Tuple<int, JObject> tuple = customViewService.UpdateDataByView(ProjectId, account, array, viewId);
  9. JObject ret = new JObject();
  10. ret.Add(new JProperty("rows", array));
  11. ret.Add(new JProperty("result", tuple.Item1 > 0));

遍历,在不清楚该JSON的结构情况下:

[csharp] view plaincopy
  1. JsonTextReader reader = new JsonTextReader(new StringReader(sjson));
  2. StringBuilder sb = new StringBuilder("");
  3. while (reader.Read())
  4. {
  5. if (reader.Value != null)
  6. sb.Append(String.Format("Token: {0}, Value: {1}\r\n", reader.TokenType, reader.Value));
  7. else
  8. sb.Append(String.Format("Token: {0}\r\n", reader.TokenType));
  9. }

操作JSON对象的更多相关文章

  1. 在Javascript操作JSON对象,增加 删除 修改

    在Javascript操作JSON对象,增加删除修改全有的,详情见代码 <script type="text/javascript"> var jsonObj2 = { ...

  2. javascript、js操作json对象和字符串互相转换方法

    相信前端的同学们对json并不陌生,接触过很多.但是很少人知道json的全称是什么,哈哈,我也是查资料知道的.(JSON JavaScript Object Notation是一种轻量级的数据交换格式 ...

  3. 操作Json对象的C#方法

    json对象长这样 { "UniqueName": { "Required": "true", , , "Regex": ...

  4. 如何使用powershell操作json对象

    读取Json文件 $dataTransformerDirPath为读取Json文件的目录 点击查看代码 # 读取文件 UTF8-NOBOM function ReadFile($path) { ret ...

  5. shell下有操作json对象的库

    http://kernelpanic.im/blog/2012/03/08/shell-manipulate-json/ Json.org推荐了两个:Jshon和JSON.sh 其中JSON.sh是完 ...

  6. js 操作json对象增删改

    //将表单序列化成字符串 $.fn.serializeObject = function () { var obj = {}; var count = 0; $.each(this.serialize ...

  7. javascript操作JSON对象,增加 删除 修改

    JS只能输入数字,数字和字母等的正则表达式 1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace( ...

  8. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值

    一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...

  9. JsonCpp操作数组对象

    JsonCpp操作数组对象 概述 ​ Json格式数据中,除了简单的String类型和一些非String类型,也有像各种高级语言中的数组类型一般的数组对象,且Json数组在实际开发中使用频率也比较高, ...

随机推荐

  1. OneinStack 安装 LNMP 切换PHP版本

    如果你的环境不是OneinStack安装的  ,可以略过这条博客了 注意:以下所有命令若提示权限不足 请在命令前加 sudo *** ①,首先查看当前已安装的PHP版本,我这里安装了好几个版本,你们可 ...

  2. vlmcsd-1111-2017-06-17

    Source and binaries: http://rgho.st/6c6R7RwMZ   全部编译好了 https://www.upload.ee/files/7131474/vlmcsd-11 ...

  3. 启动web项目卡在Initializing Spring root WebApplicationContext不动

    这几天在和同学一起做一个电教器材管理系统的Web项目,用SVN互通,在此记录下经常遇到的bug. Bug: 启动项目一直卡在Initializing Spring root WebApplicatio ...

  4. Python飞机大战实例有感——pygame如何实现“切歌”以及多曲重奏?

    目录 pygame如何实现"切歌"以及多曲重奏? 一.pygame实现切歌 初始化路径 尝试一 尝试二 尝试三 成功 总结 二.如何在python多线程顺序执行的情况下实现音乐和音 ...

  5. 把wav文件等时长切割

    ffmpeg -i somefile.mp3 -f segment -segment_time 1800 -c copy out%03d.mp3 segment_time 是切割时长,单位秒

  6. CIFAR100与VGG13实战

    目录 CIFAR100 13 Layers cafar100_train CIFAR100 13 Layers cafar100_train import tensorflow as tf from ...

  7. package control(转载)

    Package Control(扩展包管理器)   []Package Control 可以看做是一个ST的扩展管理器,可以去下载.安装.删除 Sublime Text 3的各种插件.皮肤等.   [ ...

  8. [NOIP2008] 提高组 洛谷P1125 笨小猴

    题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最 ...

  9. UVA 1025_A Spy in the Metro

    [题意](小紫书)一个人从站台1出发,乘车要在时刻T到达站台n,为使在站台等车时间最短,她可以选择乘坐两个方向的列车,并在客车停靠站的时候换车. [分析]每次停站下车时,她都有三种选择,1.原地不动 ...

  10. 微信浏览器video

    <style> /* 解决上下有黑边,不能全屏 */ video{object-fit: fill;} </style> <video id="videoID& ...