木子屋 Dnawo's BLOG

JSON字符串转C#匿名对象工具

👤 dnawo 📅 2014-12-16 👁 5359 👍 0 💬 0 🔄 来源:本站原创
经常需在C#程序中使用第三方接口返回的JSON字符串,针对JSON写一个类反序列化太麻烦,Newtonsoft.Json有一个方法可以将JSON字符串转为C#匿名对象:

public static T DeserializeAnonymousType<T>(string value, T anonymousTypeObject)

那么问题就变成了怎么针对JSON写一个C#匿名对象,这简单多了:

using ICSharp.Newtonsoft.Json;
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var jsonString = "{'name':'小明','age':30,'fruits':['apple','orange','banana']}";
            var anonymousObject = JsonConvert.DeserializeAnonymousType(jsonString, new { name = string.Empty, age = 0, fruits = new[] { "" } });

            Console.WriteLine("name={0}, age={1}, fruits={2}", anonymousObject.name, anonymousObject.age, String.Join(",", anonymousObject.fruits));

            Console.ReadLine();
        }
    }
}

我们还可以直接反序列化为 JObject,然后通过索引器直接访问:

using ICSharp.Newtonsoft.Json;
using ICSharp.Newtonsoft.Json.Linq;
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var jsonString = "{'name':'小明','age':30,'fruits':['apple','orange','banana']}";
            var anonymousObject = JsonConvert.DeserializeObject(jsonString) as JObject;
            Console.WriteLine("name={0}, age={1}, fruits={2}", anonymousObject["name"], anonymousObject["age"], String.Join(",", anonymousObject["fruits"].ToObject<string[]>()));

            Console.ReadLine();
        }
    }
}

图片

JsonTool下载:http://www.mzwu.com/pic/201412/JsonTool.exe

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 福建移动宽带智能提速 下一篇 → SQLServer主键和唯一约束的区别