【发布时间】:2013-06-18 16:05:25
【问题描述】:
我必须将给定的 JSON 字符串读入 C# 对象。到目前为止一切都很好,但这个案子对我来说有点特别。 JSON 字符串包含 2 个实体。一个是平面对象,第二个是列表,至少在 JSON 中是合乎逻辑的,但不是真正的。希望您能帮我找到解决办法。
为了更好地解释它,我将向您展示我的 JSON 输入的一部分:
{
"game":{"GameMode":"1","IsNetworkMode":"1","NbMaxPlayer":"12","GameState":"1"},
"player_56":{"PlayerUserId":"137187","PlayerIALevel":"-1","PlayerObserver":"0"},
"player_7":{"PlayerUserId":"3440","PlayerIALevel":"-1","PlayerObserver":"0"}
}
我想将 Player 实体序列化为此类对象的集合。问题是它们并没有真正存储为 JSON 中的集合。它们的动态名称为“player_56”,并且数字不是像“1,2,3”这样的任何逻辑顺序。
目前我正在使用DataContractJsonSerializer 来完成这项任务。
[DataContract]
public class AlbReplay
{
[DataMember(Name = "game")]
public AlbGame Game { get; set; }
[DataMember(Name = "player")]
public List<AlbPlayer> Players { get; set; }
}
有什么建议吗?
【问题讨论】:
-
到目前为止我已经尝试过了: [DataContract] public class AlbReplay { [DataMember(Name = "game")] public AlbGame Game { get;放; } [DataMember(Name = "player")] public List
Players { get;放; } } -
你可以控制这个 JSON 吗?理想情况下,您需要获得一系列玩家。动态属性不是很有帮助!您可以序列化为动态对象,然后只查找以“播放器”开头的属性,但这不是很好。
-
不,很遗憾,不是。如果没有其他选择,我必须这样做,到目前为止谢谢!
标签: c# json collections deserialization