c# - 将 JObject 添加到 JObject

标签 c# json linq json.net

我有一个像这样的 json 结构:

var json = 
{
  "report": {},
  "expense": {},
  "invoices": {},
  "projects": {},
  "clients": {},
  "settings": {
    "users": {},
    "companies": {},
    "templates": {},
    "translations": {},
    "license": {},
    "backups": {},
  }
}

我想向 json 添加一个新的空对象,如“report”:{}

我的 C# 代码是这样的:

JObject json = JObject.Parse(File.ReadAllText("path"));
json.Add(new JObject(fm.Name));

但它给了我一个异常(exception):

Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject

那么,如何向 json 添加一个新的空 JObject

提前致谢

最佳答案

你得到这个错误是因为你试图用一个字符串构造一个JObject(它被转换成一个JValue)。 JObject 不能直接包含 JValue,也不能直接包含另一个 JObject;它只能包含 JProperties(它又可以包含其他 JObjectsJArraysJValues)。

要使其正常工作,请将第二行更改为:

json.Add(new JProperty(fm.Name, new JObject()));

工作演示:https://dotnetfiddle.net/cjtoJn

关于c# - 将 JObject 添加到 JObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48168738/

相关文章:

Javascript:查找值在 JSON 中出现的次数

javascript - Laravel 返回渲染的 html View ,不带\r\n -- json

c# - 为使用查询字符串的 linq 中的 where 语句提供默认值

c# - 使用 LINQ 嵌套查询获取更新的最新行

c# - 无法从用法推断类型参数

c# - 根据一列获取两个数据表之间的差异

javascript - 基于单选按钮的Jquery函数是选择

json - 如何在没有中间字符串的情况下将node.js Buffer 转换为JavaScript 对象

c# - 检查 Travelport 通用 API AirCreateReservationReq 中的格式错误响应

c# - DDD 和基于重型基础设施的 'domains' - DDD 在这里失败了吗?