好的.我正在为游戏作为项目编写一个保存编辑器,并且保存在JSON中.我使用它后从实际编辑器返回一个小片段,它看起来像:
{"hero":{"STR":10,"HP":33,"HT":35,"attackSkill"13,"defenseSkill":3}}
Run Code Online (Sandbox Code Playgroud)
这只是保存的一小部分.我不能为我的生活弄清楚如何只在整个保存中替换这部分.我试过了
我想换掉
{"hero"{...}}
Run Code Online (Sandbox Code Playgroud)
部分与新的部分.
我该怎么做呢?谢谢.
此外,游戏的pastebin保存,如果有人想要/需要它:http://pastebin.com/eK13cNtg
Json.NET支持"LINQ to JSON"和动态访问,允许动态处理整个树而无需POCO映射.这样做的好处在反序列化,以在增加的映射类型的对象就不是需要考虑往返序列化.
这可用于解析JSON,修改对象结构,然后重建JSON文本.
这种方法可能如下所示,或者它可以使用其他可用的查询方法之一.(我没看到实际的JSON - eww,顺便说一下! - 但是在适当地打印它之后,查询结构应该很容易看到.)
JObject data = JObject.Parse(json);
JObject hero = (JObject)data["hero"];
hero["STR"] = 42; // "god-like strength" hax; modifies the JObject
json = data.ToString(); // re-serialize tree, along with modifications
Run Code Online (Sandbox Code Playgroud)
该dynamic类型还可用于访问和操作 Json.NET树.
Json.NET可以使用"奇数名称"完美地工作,但是这些名称需要使用注释指定或映射到具有动态键(如Dictionary/JObject)的类型.
但是,由于使用了广泛的名称,我不会在这里使用POCO路线 - 将所有内容编入完全早期绑定类型将是非常困难/乏味的.然而,这并不是说"英雄"无法解析为特定的POCO.