仅替换JSON对象的特定部分



好的。我正在为一个游戏项目开发一个保存编辑器,保存是JSON格式的。使用后,我从实际编辑器返回了一个小片段,它看起来像:

{"hero":{"STR":10,"HP":33,"HT":35,"attackSkill"13,"defenseSkill":3}}

这只是节省的一小部分。我一辈子都想不出如何在整个保存中只替换这一部分。我试过

  • Json对整个事情的描述。这不起作用,因为出于某种原因,游戏制造商决定让一半的字段是他的游戏中的类名,例如"com.whatevery.whatever":1。这吓坏了解析器
  • 只是使用返回的代码段。游戏不会接受它,因为它几乎没有实际的扑救那么完整
  • 只是在寻找价值。我不能让它工作,只是因为我不知道如何很好地操纵字符串

我只想更换

{"hero"{...}} 

用新零件分开。

我该怎么做呢?谢谢

此外,如果有人想要/需要,请保存游戏的pastebin:http://pastebin.com/eK13cNtg

Json。NET支持"LINQ to JSON"和动态访问,这允许在不需要POCO映射的情况下动态处理整个树。与反序列化为类型化对象相比,这有一个优势,即对映射的添加不需要考虑往返序列化。

这可以用于解析JSON,修改对象结构,然后重建JSON文本。

这样的方法可能如下所示,也可以使用其他可用的查询方法之一。(我没有深入研究实际的JSON-eww,btw!-但在适当地打印后,查询结构应该很容易看到。)

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

dynamic类型也可用于Json的访问和操作。NET树。


Json。NET可以很好地处理"奇数名称",但这些名称需要用注释指定,或者映射到具有动态键的类型,如Dictionary/JObject。

然而,由于使用的名称范围广泛,我不会在这里使用POCO路由——将所有内容编码为完全早期绑定的类型将是愚蠢的困难/乏味;然而,这并不是说"英雄"不能被解析为特定的POCO。

我不是一个C#爱好者,但我想看看是否有不同的解析器。内部句点是不幸的,但如果它们在带引号的字符串中(如果不是,则不是真正的JSON),解析器应该能够将其处理为有效的JSON(因为它们是有效的Javascript)。

以下Javascript

var myObj = {'no.kidding':'This is valid'};
alert(myObj['no.kidding']);

实际上会提醒您"这是有效的"。

如果您使用的解析器不支持它,我认为它不是一个兼容的解析器。

您可以在此处按语言查找解析器:http://json.org/-看起来C#大约有十几个,所以希望其中一个能为你工作。

如果你没有任何浮点数字,那么一个丑陋的破解方法(但可能是有用的解决方案)就是全局替换"在解析之前为"_"(或其他一些没有问题的令牌),然后在重新字符串化时将其反转。您也可以使用某种正则表达式来只替换引号字符串中的句点,这将在数字问题上为您提供一点保护。

Json到C#的整个过程。这不起作用,因为对一些人来说游戏制造商决定让一半的场地成为一流场地的原因他游戏中的名字,例如"com.whatevery.whatever":1。这吓坏了解析器。

我无法重新创建该问题。这对我有用。

dynamic response = Newtonsoft.Json.Linq.JObject.Parse(json);
var jsonNewHero = "{'hero':{'STR':10,'HP':33,'HT':35,'attackSkill': 13,'defenseSkill':3}}";
dynamic newHero = Newtonsoft.Json.Linq.JObject.Parse(jsonNewHero);
response.hero = newHero.hero;
var newJson = Newtonsoft.Json.JsonConvert.SerializeObject(response, Newtonsoft.Json.Formatting.Indented);

正在工作。NET Fiddle:http://dotnetfiddle.net/PKPQC1

第页。S: 使用最新的Newtonsoft Json 6.0.1版

相关内容

  • 没有找到相关文章

最新更新