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

经常需在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 | 引用: 0 | 查看次数: 4386
发表评论
登录后再发表评论!