JSON.NET 简单的使用

JSON.NET(http://json.codeplex.com/,https://github.com/JamesNK/Newtonsoft.Json)使用来将.NET中的对象转换为JSON字符串(序列化?),或者将JSON字符串转换为.NET中已有类型的对象(反序列化?)

首先为了例子随便定义一个类型:

复制代码
public class Product
{
    public string Name { get; set; }
    public DateTime Expiry { get; set; }
    public decimal Price { get; set; }
    public string[] Sizes { get; set; }

    public override string ToString()
    {
        return string.Format("Name:{0},Expiry:{1},Price:{2},SizesCount:{3}"
            , Name, Expiry, Price, Sizes.Length);
    }
}
复制代码

初始化对象:

复制代码
public static void Main(string[] passwordargs)
{
    Product product = new Product()
    {
        Name = "android",
        Expiry = DateTime.Now,
        Price = 2000,
        Sizes = new string[] { "1.5", "2.2", "4.1" }
    };
}
复制代码

进行到JSON的转换:

Console.WriteLine(JsonConvert.SerializeObject(product));

输出结果:

{"Name":"android","Expiry":"2013-08-30T09:50:11.5147845+08:00","Price":2000.0,"Sizes":["1.5","2.2","4.1"]}

其它看起来一切正常,除了这个日期有点怪

格式化日期:

//设置日期时间的格式,与DataTime类型的ToString格式相同
IsoDateTimeConverter iso = new IsoDateTimeConverter();
iso.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";

Console.WriteLine(JsonConvert.SerializeObject(product, iso));

输出结果:

{"Name":"android","Expiry":"2013-08-30 09:53:58","Price":2000.0,"Sizes":["1.5","2.2","4.1"]}

从JSON到对象的转换:

string str = "{\"Name\":\"android\",\"Expiry\":\"2013-08-30 09:53:58\",\"Price\":2000.0,\"Sizes\":[\"1.5\",\"2.2\",\"4.1\"]}";

Product p = (Product)JsonConvert.DeserializeObject(str, typeof(Product));

Console.WriteLine(p.ToString());

输出结果:

Name:android,Expiry:2013/8/30 9:53:58,Price:2000.0,SizesCount:3

从JSON到键值对的转换:

复制代码
string strJson = @"{""Name1"": ""小明"",""Name2"": ""小花"",""Name3"": ""小红""}";

Dictionary<string, string> _dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(strJson);

foreach (KeyValuePair<string, string> kp in _dictionary)
{
    Console.WriteLine(kp.Key + ":" + kp.Value);
}
复制代码

输出结果:

Name1:小明
Name2:小花
Name3:小红

从字符串转换到JSON对象,以及JSON对象的简单使用:

复制代码
string strJson2 = @"{ ""student"": { ""Name1"": ""小明"" , ""Name2"": ""小花"" , ""Name3"": ""小红""} }";

JObject jsonObj = JObject.Parse(strJson2);

Console.WriteLine(jsonObj["student"]["Name1"].ToString());
Console.WriteLine(jsonObj["student"]["Name2"].ToString());
Console.WriteLine(jsonObj["student"]["Name3"].ToString());
复制代码

输出结果:

小明
小花
小红

直接生成JSON对象:

复制代码
JObject json =
    new JObject(
    new JProperty("Channel",
        new JObject(
        new JProperty("title", "JSON"),
        new JProperty("link", "JSON.NET"),
        new JProperty("description", "JSON.NET Description"),
        new JProperty("items",
            new JArray(
            new JObject(new JProperty("haha1", "123")),
            new JObject(new JProperty("haha2", "456")),
            new JObject(new JProperty("haha3", "789"))
                )))));

Console.WriteLine(json.ToString());
复制代码

输出结果:

{
  "Channel": {
    "title": "JSON",
    "link": "JSON.NET",
    "description": "JSON.NET Description",
    "items": [
      {
        "haha1": "123"
      },
      {
        "haha2": "456"
      },
      {
        "haha3": "789"
      }
    ]
  }
}

暂时先记录这么多,以后再继续补充

posted @   不是豆豆  阅读(25919)  评论(3编辑  收藏  举报
编辑推荐:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
友情链接:迷途


点击右上角即可分享
微信分享提示