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 该如何读取和写实体?请大家帮帮忙,谢谢了!
10000003前加个数字:
json="{\"10000003\":{...";
json.replace("\"10000003\":","\"p10000003\":");
实体类{
xxx p10000003{get;set;}
}
json.replace("\"100000","\"id\":100000");应该是这样替换吧?
@飘渺随风:
id是什么?"\"10000003\":",要包含:号,不然其它数据也被替换了
貌似不行,因为前边那个10000003值不确定,没法替换...
大哥,还有其他方法吗?
@飘渺随风:
那就用正则Regex.Replace(json,@"\"(\d+)\":",@"\"p$1\":")
@飘渺随风: 我觉得这个序列化结果有问题
@向往-SONG: 这个正则好像有点问题...
@程序员的人生: 恩,应该弄成key=value的形式我就能正常读取了....不过前台我可以用jquery全部获取到,但是需求是要后台获取这个json数据并处理...
@飘渺随风:
Regex.Replace(json,"\"(\\d+)\":","\"p$1\":")
@程序员的人生: 错了,是key:value...
@飘渺随风:
--!你回错人了。。。
@向往-SONG: Regex.Replace(GetWebString(url),"\"(\\d+)\":","\"rvalue\":");我又改了下,这样才可以...
@向往-SONG: 又优化了一下,可以读替换的那个数了,Regex.Replace(GetWebString(url), "\"(\\d+)\":", "\"id\":\"$1\",\"rvalue\":");
太感谢了!结贴...谢谢 向往-SONG!同样也谢谢 程序员的人生 !
能给出详细点的说明么,比如源码。
晕,也没什么源码,就一个反序列化两段代码和两个实体类
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; } } } }
@飘渺随风: 你序列化的是List<Expend>还是List<RomeValue>
@程序员的人生: <Expend>这个嵌套的是<RomeValue>