gpt4 book ai didi

c# - 仅替换 JSON 对象的特定部分

转载 作者:太空狗 更新时间:2023-10-30 00:10:34 24 4
gpt4 key购买 nike

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

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

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

  • Json 到 C#-ing 整个事情。这是行不通的,因为出于某种原因,游戏制作者决定将一半的字段作为他游戏中的类名,例如。 “com.whatever.whatever”:1。这吓坏了解析器。
  • 仅使用返回的片段。游戏不会接受它,因为它远没有实际保存的那么完整。
  • 只是搜索值。我无法让它工作,只是因为我不会很好地处理字符串。

我只想替换

{"hero"{...}} 

与新部分分开。

我该怎么做?谢谢。

此外,游戏保存的 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

dynamic type也可用于 access and manipulation Json.NET 树。


Json.NET 可以很好地处理“奇数名称”,但此类名称需要使用注释指定或映射到具有动态键的类型,例如 Dictionary/JObject。

但是,由于使用的名称范围很广,我不会在这里使用 POCO 路由——将所有内容编成完全早期绑定(bind)的类型将非常困难/乏味;然而,这并不是说不能将“英雄”解析为特定的 POCO。

关于c# - 仅替换 JSON 对象的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22123619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com