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. }

最新文章

  1. C#设计模式-装饰者模式
  2. 使用Nominatim进行openstreetmap地址搜索/解析
  3. Qt 配置文件QSettings
  4. 强连通 HDU 1827
  5. win10下vs2015配置Opencv3.1.0过程详解
  6. Linux常用命令之awk
  7. 洛谷 P1412 经营与开发
  8. pycharm创建Flask项目,jinja自动补全,flask智能提示
  9. 通过JS 给这个input加一个事件 获得焦点,回车事件绑定
  10. xpath&amp;css选择器
  11. 11.Python-第三方库requests详解(三)
  12. myeclipse部署项目的时候报No projects are available for deployment to this server但是项目明明存在
  13. 第212天:15种CSS居中的方式,最全了
  14. SQL Sever 2008配置工具中过程调用失败解决方法
  15. window.location.href = basePath + &quot;paper/deleteExpertComment.action?expertId=&quot;+$(this).prev().val();
  16. quartus ii工程文件的分析
  17. 转 C++11 并发指南std::condition_variable详解
  18. 最详细的PHP flush()与ob
  19. phpBB安装
  20. c/c++: c++函数返回类型什么情况带const

热门文章

  1. Oracle存储过程和程序包
  2. 微信小程序UI组件库 iView Weapp快速上手
  3. linux core dump 生成和调试
  4. 80-Force Index,强力指标.(2015.7.1)
  5. 贝尔数--Codeforces908E. New Year and Entity Enumeration
  6. Linux下汇编语言学习笔记66 ---
  7. 1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组
  8. SOJ 4454 (矩阵快速幂)
  9. Redis2019年3.22
  10. NOIP 2010 关押罪犯