首页 新闻 会员 周边

C#如何反序列化嵌套的json格式数据,希望大家帮忙看下...

0
悬赏园豆:50 [已解决问题] 解决于 2012-09-11 16:44
json格式如下:
{"10000003":{"hall_id":"10000003","sys_point":"100000","xy_sys_point":"0"},"10000065":{"hall_id":"10000065","sys_point":"92162","xy_sys_point":"6275192","win_point":"5537000"}}

我用的是JavaScriptSerializer js = new JavaScriptSerializer();方法,实体类已经建过,实体类为嵌套,只是不知道json数据的10000003 和10000065  该如何读取和写实体?请大家帮帮忙,谢谢了!

飘渺随风的主页 飘渺随风 | 初学一级 | 园豆:67
提问于:2012-09-11 15:47
< >
分享
最佳答案
1

10000003前加个数字:

json="{\"10000003\":{...";

json.replace("\"10000003\":","\"p10000003\":");

实体类{

   xxx p10000003{get;set;}

}

收获园豆:50
向往-SONG | 老鸟四级 |园豆:4853 | 2012-09-11 15:55

json.replace("\"100000","\"id\":100000");应该是这样替换吧?

飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 16:03

@飘渺随风: 

id是什么?"\"10000003\":",要包含:号,不然其它数据也被替换了

向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-11 16:08

貌似不行,因为前边那个10000003值不确定,没法替换...

飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 16:12

大哥,还有其他方法吗?

飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 16:16

@飘渺随风: 

那就用正则Regex.Replace(json,@"\"(\d+)\":",@"\"p$1\":")

向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-11 16:18

@飘渺随风: 我觉得这个序列化结果有问题

程序员的人生 | 园豆:235 (菜鸟二级) | 2012-09-11 16:23

@向往-SONG: 这个正则好像有点问题...

飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 16:27

@程序员的人生: 恩,应该弄成key=value的形式我就能正常读取了....不过前台我可以用jquery全部获取到,但是需求是要后台获取这个json数据并处理...

飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 16:28

@飘渺随风: 

Regex.Replace(json,"\"(\\d+)\":","\"p$1\":")

向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-11 16:31

@程序员的人生: 错了,是key:value...

飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 16:32

@飘渺随风: 

--!你回错人了。。。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-11 16:33

@向往-SONG:  Regex.Replace(GetWebString(url),"\"(\\d+)\":","\"rvalue\":");我又改了下,这样才可以...

飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 16:36

@向往-SONG: 又优化了一下,可以读替换的那个数了,Regex.Replace(GetWebString(url), "\"(\\d+)\":", "\"id\":\"$1\",\"rvalue\":");

太感谢了!结贴...谢谢 向往-SONG!同样也谢谢 程序员的人生 !

飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 16:43
其他回答(1)
0

能给出详细点的说明么,比如源码。

程序员的人生 | 园豆:235 (菜鸟二级) | 2012-09-11 15:51

晕,也没什么源码,就一个反序列化两段代码和两个实体类

 public static T ScriptDeserialize<T>(string jsonString)
        {           
            JavaScriptSerializer js = new JavaScriptSerializer();
            return js.Deserialize<T>(jsonString);

        }

实体类:

namespace Model
{
    [Serializable]
    public class Expend
    {
        //public Expend()
        //{ }        
        
        private RoomValue _rvalue;

        public RoomValue  rvalue
        {
            get { return _rvalue; }
            set { _rvalue = value; }
        }
    
            
    }

    
}
namespace Model
{
    [Serializable]
    public class RoomValue
    {
        private int _hall_id;

        public int hall_id
        {
            get { return _hall_id; }
            set { _hall_id = value; }
        }

        private int _sys_point;

        public int sys_point
        {
            get { return _sys_point; }
            set { _sys_point = value; }
        }

        private int _xy_sys_point;

        public int xy_sys_point
        {
            get { return _xy_sys_point; }
            set { _xy_sys_point = value; }
        }

        private int _win_point;

        public int win_point
        {
            get { return _win_point; }
            set { _win_point = value; }
        }
    }
}
支持(0) 反对(0) 飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 15:57

@飘渺随风: 你序列化的是List<Expend>还是List<RomeValue>

支持(0) 反对(0) 程序员的人生 | 园豆:235 (菜鸟二级) | 2012-09-11 16:15

@程序员的人生: <Expend>这个嵌套的是<RomeValue>

支持(0) 反对(0) 飘渺随风 | 园豆:67 (初学一级) | 2012-09-11 16:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册