有一个 JSON 字符串 如下:
{"ename":"className",
"children":
[{"ename":"name","type":"string"},{"ename":"age","type":"int"},
]
}
要实现读取这个字符串,然后转换成如下的一个类
public class className
{
public string name {get;set;}
public int age {get;set;}
}请问应该怎么做?请大家指点,感激不尽!

解决方案 »

  1.   

    string JsonSerializer<T>(T t)
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
                MemoryStream ms = new MemoryStream();
                ser.WriteObject(ms, t);
                string jsonString = Encoding.UTF8.GetString(ms.ToArray());
                ms.Close();
                return jsonString;
            }T JsonDeserialize<T>(string jsonString)
            {
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
                MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
                T obj = (T)ser.ReadObject(ms);
                return obj;
            }我现在用的东西 供参考
      

  2.   

            /// <summary>
            /// Serialize object to string of json format
            /// </summary>
            private string JsonSerializer<T>(T t)
            {
                var ser = new DataContractJsonSerializer(typeof(T));
                var ms = new MemoryStream();
                ser.WriteObject(ms, t);
                string jsonString = Encoding.UTF8.GetString(ms.ToArray());
                ms.Close();
                return jsonString;
            }        /// <summary>
            /// Deserialize string of json format to object
            /// </summary>
            private T JsonDeserialize<T>(string jsonString)
            {
                var ser = new DataContractJsonSerializer(typeof(T));
                var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
                var obj = (T)ser.ReadObject(ms);
                return obj;
            }
      

  3.   

    解析json中的数据
    调用
    CSharpCodeProvider
    CompilerParameters
    生成类
      

  4.   

     [url href="http://json.codeplex.com"]JSON[/url]
      

  5.   

    可能我没有把问题描述的很清楚,我再说一遍吧:
    一个TXT文件中有如下内容
    {"ename":"className",
    "children":
    [{"ename":"name","type":"string"},{"ename":"age","type":"int"},
    ]
    }
    然后写一个程序,读这个TXT文件,最后生成一个新的TXT文件,新的文件的内容是:
    public class className
    {
    public string name {get;set;}
    public int age {get;set;}
    }----------------------------
    请问:应该如何实现这个程序?请大家帮忙啊,本人菜鸟,又要急用。
      

  6.   


    #1楼已经把你要调用的类库贴出来了。反序列化只需要写一行var x= JsonDeserialize<ClassName>(str);就行了。
      

  7.   

    “最后生成一个新的TXT文件,新的文件的内容是”不知道这是搞什么?!
      

  8.   

    看来你也没有明白我的意思。只有3楼明白我的意思!
    一楼的代码的功能是将一个JSON字符串转换成一个对象,但我不是要实现这个功能!!!
    我的目的是:
    根据给定的 JSON 字符串,通过程序生成 对应的 实体类的定义!我要的是实体类的定义,并不是这个实体类的一个实例对象!
    而一楼代码是:在已经有了JSON 字符串、有了对应的实体类的定义 的前提下,将JSON字符串反序列化成实体类的一个实例对象。
    不知道这样说还能不能让人明白,我的需求不是大家常规想象的那个需求!不知道这下大家明白没有。
      

  9.   

    原来已经有了这样的工具,
    http://jsonclassgenerator.codeplex.com/  ----开源的winform工具
    http://json2csharp.com/---一款在线转化工具
    我现在认为,如果会用恰当的关键字去搜索,就会发现,遇到的问题已经解决了。
    唉,白忙活了这么久。
      

  10.   

    解析json中的数据
    调用
    CSharpCodeProvider
    CompilerParameters
    生成类