• .NET2.0下的对象生成JSON数据


    前言:今天研究了下在.NET2.0环境下开发Ajax程序经常用到的一个数据类型JSON,

    一、什么是JSON?

    自己也写不了句子不是很专业,下面是百度百科的关于JSON的介绍:

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

    如果曾经使用过Json,就会清楚Json可以分为两个部分:

    1.         Json Object(A collection of name/value pairs)

    2.         JSON Array (An ordered list of values

    对于在.NET2.0环境下把对象序列成一个JSON对象在C#2.0这个版本中并没有相关的类库,当然在JSON官网上有很多的第三方的开源框架:

    1. fastJSON.
    2. JSON_checker.
    3. Jayrock.
    4. Json.NET - LINQ to JSON.
    5. LitJSON.
    6. JSON for .NET.
    7. JsonFx.
    8. JSONSharp.
    9. JsonExSerializer.
    10. fluent-json
    11. Manatee Json

    这些都在JSON官网上看到的C#常用JSON框架,对于.net2.0来说我觉得用LitJSON这个开源的第三方框架就行了。

    二、LitJSON框架的使用

    首先要先下载这里官网地址:http://lbv.github.io/litjson/

    最新的版本是:litjson-0.7.0 ,测试环境(VS2010)

    首先、先对项目进行添加引用这个就不用说了吧。还要在使用的类用添加命名空间。

    提醒:在对一个对象转化成JSON中这个框架对汉字进行了重新的编码,但是在浏览器下又显示正常,暂时没有发现什么麻烦

    把一个类型软化为json对象

    Person person = new Person();
                person.Name = "张晓天";
                person.Age = 21;
                person.Address = "中国河南省平顶山";
                string json_per = JsonMapper.ToJson(person);
                context.Response.Write(json_per);

    输出的结果:

    {"Name":"u5F20u6653u5929","Age":21,"Address":"u4E2Du56FDu6CB3u5357u7701u5E73u9876u5C71"}

    把一个JSON对象转化成jsonData类型方便C#操作

    在这里LitJson把一个JSON对象序列成了C#可以操作的数据类型JsonData

    string json = @"{""name"":""李梅"",""sex"":""女"",""address"":{""Country"":""中国"",""pro"":""河南省""},""arry"":[""数组内容一"",""数组内容二""]}";
                    Context.Response.Write("json原数据是:" + json + "<br/>");
                    JsonData data = JsonMapper.ToObject(json);
    
    Context.Response.Write("对json操作后的取值:<br/>省份:" + data["address"]["pro"] + "<br/>" + data["arry"][0]);

    输出的结果:

    json原数据是:{"name":"李梅","sex":"女", "address":{"Country":"中国","pro":"河南省"}, "arry":["数组内容一","数组内容二"] }
    对json操作后的取值:
    省份:河南省

    把一个List集合转化成一个JSON对象

    List<Person> list = new List<Person>();     //序列化的list
                    Person p1 = new Person();
                    p1.Name = "张晓天";
                    p1.Age = 21;
                    p1.Address = "河南省平顶山";
                    list.Add(p1);
                    Person p2 = new Person();
                    p2.Name = "李梅";
                    p2.Age = 22;
                    p2.Address = "河南省商丘";
                    list.Add(p2);
                    string json_txt = JsonMapper.ToJson(list);
                    Context.Response.Write(json_txt);

    输出的结果:

    数组内容一[{"Name":"u5F20u6653u5929","Age":21,"Address":"u6CB3u5357u7701u5E73u9876u5C71"},{"Name":"u674Eu6885","Age":22,"Address":"u6CB3u5357u7701u5546u4E18"}]

    这就是测试的内容当对于LitJson.dll这个框架还有两个我没有写出来,官网有对应的说明文档在这里:http://lbv.github.io/litjson/docs/quickstart.html

  • 相关阅读:
    JAVA面试——设计模式
    CSS清除浮动
    CSS外边距
    baidu-ife
    笔记一则
    Atom
    校园网认证
    四月甘九-省
    Python sys.argv[]用法
    Python模块导入的方法
  • 原文地址:https://www.cnblogs.com/zxdBlog/p/3237202.html
Copyright © 2020-2023  润新知