说起json怎么说呢,听说已久但是就是未使用过;
前天合作伙伴给我个接口使用json传输数据的,这让我不得不现学现用。
首先我们应该对json脚本有个初步的认识。
下面脚本是我从网上直接找的,如果有和我一样的,可以在页面中运行下以便对json有个初步的认识。
<script type="text/javascript">
function test() {
//直接声明json数据结构
var myJSONObject = { "bindings": [
{ "ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*" },
{ "ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*" },
{ "ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*" }
]
};
//声明字符串,可对比一下json文本与我们正常文本的区别
var normalstring = '[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]';
var jsontext = '[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]';
//调用eval函数转换为json对象,
var myE = eval(normalstring);
document.writeln(myE + '<br><br>');
//将json对象转换为字符串
var text = JSON.stringify(myE);
//对比转换后的json文本与声明的文本区别
document.writeln('转换后的json文本:' + text + '<br><br>声明的json格式文本' + jsontext + '<br><br>声明的普通格式文本' + normalstring + '<br><br>');
//当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构
var myData = JSON.parse(jsontext);
document.writeln("json 对象:" + myData + '<br><br>');
//下面是对json对象的增删查改操作
//声明json对象
var jsonObj2 = { persons: [{ name: "jordan", sex: "m", age: "40" }, { name: "bryant", sex: "m", age: "28" }, { name: "McGrady", sex: "m", age: "27"}] };
var persons = jsonObj2.persons;
var str = "";
var person = { name: "yaoMing", sex: "m", age: "26" };
//以下为json对象的操作,去掉注释可以查看操作结果
//jsonObj2.persons.push(person);//数组最后加一条记录
//jsonObj2.persons.pop();//删除最后一项
//jsonObj2.persons.shift();//删除第一项
jsonObj2.persons.unshift(person); //数组最前面加一条记录 只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice( )进行crud操作! //删除
//jsonObj2.persons.splice(0,2);//开始位置,删除个数
//替换不删除
var self = { name: "tom", sex: "m", age: "24" };
var brother = { name: "Mike", sex: "m", age: "29" };
jsonObj2.persons.splice(1, 0, self, brother, self); //开始位置,删除个数,插入对象
//替换并删除
//jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象
for (var i = 0; i < persons.length; i++) { var cur_person = persons[i]; str += cur_person.name + "'sex is " + cur_person.sex + " and age is " + cur_person.age + "<br><br>"; }
document.writeln(str);
//转换为json文本
var myjsonobj = JSON.stringify(jsonObj2);
document.writeln(myjsonobj);
}
</script>
查看完结果,希望你和我一样对json 有初步的认识。
下面就是我们在后台代码中获取json中值的问题了。
在FrameWork3.5及以上版本中,可以直接使用以下代码:
//先在项目中添加System.Web.Extensions引用
//using System.Web.Script.Serialization;
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> json = (Dictionary<string, object>)serializer.DeserializeObject(
"{name: 'zswang', forum: 'c#'}");
object value;
if (json.TryGetValue("name", out value))
Console.WriteLine(value); // 输出:zswang
如果在低版本的FrameWork中使用,大家可以参考 http://www.yuuzle.com/csharp-json-serializer-tool-json-net.html