日期:2014-05-17  浏览次数:21091 次

如何将JSON格式转化成类,也可以将类转换成JSON
如题,如何将JSON转换成类,将类转化成JSON,就是可以相互转换!
JSON

------解决方案--------------------
给你个最简单的例子:引用Newtonsoft.Json.dll
 class Program
    {
        static void Main(string[] args)
        {
            Student student = new Student();
            student.Name = "guwei4037";
            student.Age = 7;
            string json = JsonConvert.SerializeObject(student);//序列化输出Json字符串
            Console.WriteLine(json);

            Student jsonObject = JsonConvert.DeserializeObject<Student>(json);
            Console.WriteLine(string.Join(" ", jsonObject.Name, jsonObject.Age));//反序列化输出 guwei4037和7
        }
    }

    public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

更多信息请参考:http://blog.csdn.net/chinacsharper/article/details/9246627
------解决方案--------------------
引用:
Quote: 引用:

这叫序列化和反序列化
对的,我把消息设置成了父类,根据5种消息类型设置成了子类,假如说给了我一个json,我怎么把json中的数据解析到对应的类中呢?

那先从Json字符串里先获取"MessageType"的值,可以用JsonReader试试(应该能读出来的),或者用正则表达式,然后用switch选择要反序列化到的某个子类(Text,Image...);
或者不用子类, 就把你上面的类加个字段MessageType, 当json串里面没有的属性,反序列化的时候会自动用null(比如你消息是Text,传进来的Josn里面可能没有URL,但这不会影响反序列化,只是url属性为null)
------解决方案--------------------
引用:
请教大家一个问题,我想根据MsgType(消息的类型)来将这些属性归类,


举一个使用json.net解析的例子。

首先你可以定义一个通用的“命令”类型,例如
    public class Command
    {
        public long Num;        //命令序号。如果为负数,表示是返回。
        public string Type;     //命令实体类型。
        public JToken Data;     //命令实体的json序列化(但是不是序列化为string,而是 JToken
    }


对于接收信息端,可以这样处理
string input = ......;
msg = (Command)JsonConvert.DeserializeObject(input, typeof(Command));
var type = GetDataType(msg.Type);&nb