关于json解析的问题

chiefeng 2014-07-21 02:13:59
{"code":"00",
"id":{"num":"0","istarget":"false"},
"mail":{"num":"1","istarget":"true"},
"cell":{"num":"1","istarget":"false"},
"name":{"num":0},
"addr":{"num":1},
"commodity":{},
"media":{"财经":{"num":"2.0"},"历史/社会/人文":{"num":"1.0"},"科学/教育":{"num":"2.0"}},
"ec":{"3C 数码": {"num": "9","level1": "0.6183662429189318","price": "536.2"},
"运动娱乐": {"num": "284","level1": "0.9798223497689971","price": "2746.9"}}
}

请问怎么解析这个json,上面的能读出来,但是media和ec这两个不知道怎么建类

我用的DataContractJsonSerializer
...全文
123 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
WM_JAWIN 2014-07-21
  • 打赏
  • 举报
回复
  [DataMember(Name="历史/社会/人文")]
        public string 狗屎
这个应该是你想要的
showjim 2014-07-21
  • 打赏
  • 举报
回复
fastCSharp
using fastCSharp;
        class X
        {
            string code;
            public nameNum[] Media;
            fastCSharp.setup.cSharp.json.node media
            {
                set { Media = value.Dictionary.getArray(node => nameNum.Get(node)); }
            }
            public nameNum[] Ec;
            fastCSharp.setup.cSharp.json.node ec
            {
                set { Ec = value.Dictionary.getArray(node => nameNum.Get(node)); }
            }
        }
        class nameNum
        {
            string name;
            string num;
            string level1;
            string price;
            internal static nameNum Get(KeyValuePair<subString, fastCSharp.setup.cSharp.json.node> node)
            {
                nameNum value = fastCSharp.setup.cSharp.json.parse.Get<nameNum>(node.Value);
                value.name = node.Key;
                return value;
            }
        }
            X value = fastCSharp.setup.cSharp.json.parse.Get<X>(json);
chiefeng 2014-07-21
  • 打赏
  • 举报
回复
引用 6 楼 duanzi_peng 的回复:
[quote=引用 5 楼 chiefeng 的回复:] 感觉设计的不好,可以用数组,把那些中文统一用name代替,不知道我说得对不对
那就使用二维数组,不过看你的json定义,是用于传输数据接收的吧。可以定义成xml文件解析,包含的节点,节点属性都可以嵌套定义,然后解析,也挺快的。[/quote] 我是说media和ec里面用[] 不是改变传输方式,这个是对方提供的接口、、
exception92 2014-07-21
  • 打赏
  • 举报
回复
引用 5 楼 chiefeng 的回复:
感觉设计的不好,可以用数组,把那些中文统一用name代替,不知道我说得对不对
那就使用二维数组,不过看你的json定义,是用于传输数据接收的吧。可以定义成xml文件解析,包含的节点,节点属性都可以嵌套定义,然后解析,也挺快的。
chiefeng 2014-07-21
  • 打赏
  • 举报
回复
感觉设计的不好,可以用数组,把那些中文统一用name代替,不知道我说得对不对
涛锅 2014-07-21
  • 打赏
  • 举报
回复
刚好最近写了篇博客
http://blog.csdn.net/qq807081817/article/details/37919339

private void button1_Click(object sender, EventArgs e)
{
string json = System.IO.File.ReadAllText(@"C:\Users\Administrator\Desktop\1.txt", Encoding.Default);
string value;
Helper.Json.GetValue(json, "media", out value);
this.textBox1.Text = value;
}



private void button1_Click(object sender, EventArgs e)
{
string json = System.IO.File.ReadAllText(@"C:\Users\Administrator\Desktop\1.txt", Encoding.Default);
string value;
Helper.Json.GetValue(json, "media", out value);
Helper.Json.GetValue(value, "财经", out value);
this.textBox1.Text = value;
}


chiefeng 2014-07-21
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
和你最外层的类 创建没什么两样。
引用 2 楼 bdmh 的回复:
你的类里面包含ec,ec又是一个类,里面包含他后面的json中的属性
但是ec和media里面是中文呀
bdmh 2014-07-21
  • 打赏
  • 举报
回复
你的类里面包含ec,ec又是一个类,里面包含他后面的json中的属性
exception92 2014-07-21
  • 打赏
  • 举报
回复
和你最外层的类 创建没什么两样。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧