【问题标题】:How To Create a JSON Object within an Existing Object in JSON using JObject如何使用 JObject 在 JSON 中的现有对象中创建 JSON 对象
【发布时间】:2020-04-20 22:51:40
【问题描述】:

我正在尝试编辑包含名为“forge”的对象(“forge”本身包含在名为“profiles”的对象中)的现有 Json 文件,并且在该对象中,我正在尝试添加另一个名为 resolution 的对象包含高度和宽度。它所属的本机应用程序可以修改和添加此元素,但我似乎只能读取、写入/创建除分辨率对象及其子对象之外的伪造对象中的所有其他对象。

但无论我在 newtonsoft 文档中阅读了多少内容,似乎都没有任何效果。这是我到目前为止所写的。请注意,此方法仅用于覆盖“伪造”对象中的所有内容,我很累添加分辨率对象,但它失败了。有人知道怎么做吗? (连接路径为json文件)

【问题讨论】:

  • 我应该提一下,如果 JArray 的东西不存在,那么它运行良好并正确覆盖了 forge 对象。
  • @MickyD 那会更有用吗?我看过和阅读的许多教程都建议以这种方式进行,我不喜欢这种方式,所以我可以创建一个类来做,所以你说的是:创建一个包含所有内容的对象(类) ,然后改为 jsonObj["profiles"]["forge"] = mycreatedclass;然后序列化它?
  • 能否请您edit 将您的代码和 JSON 包含为 文本 而不是屏幕截图?这里要求文字内容不要使用图片,原因见Discourage screenshots of code and/or errorsWhy not upload images of code on SO when asking a question
  • 要将任意 POCO 添加到 JObjectJArray,您需要使用 JToken.FromObject 的一些重载对其进行序列化。例如,请参阅Could not determine JSON object type for type “Class”。但我同意在这里使用JObject 似乎是一种反模式,它不仅仅是序列化一个匿名对象?
  • 哦,你正在阅读一些服务,没关系

标签: c# json json.net


【解决方案1】:

我认为“分辨率”不是数组,而是一个对象。

试试这个

    dynamic forge = new JObject();
    forge.Name = "forge";
    forge.Type = "Brasil";

    dynamic resolutionObj = new JObject();

    resolutionObj.Width = "10";
    resolutionObj.Height = "100"; 

    forge.resolution = resolutionObj;

你会看到这样的:

{
  "Name": "forge",
  "Type": "Brasil",
  "resolution": {
    "Width": "10",
    "Height": "100"
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2017-02-25
    • 2016-01-23
    • 2017-05-23
    • 2011-03-17
    相关资源
    最近更新 更多