如何在C#中内联添加JArray内容以构建目标JSON结构?
解决C#内联构建含JArray的JObject匹配目标JSON结构问题
首先看你需要生成的目标JSON:
{ "update": { "comment": [ { "add": { "body": "Bug has been fixed." } } ] }, "fields": { "assignee": { "name": "bob" }, "resolution": { "name": "Fixed" } }, "transition": { "id": "5" } }
你当前的C#代码卡在了JArray的内联内容上,其实不用纠结手动构造JArray——Newtonsoft.Json可以自动把匿名数组转换成JArray,用匿名对象嵌套的方式更简洁直观,修改后的代码如下:
// 先确保transition_id已定义,比如string transition_id = "5"; JObject issue_model = JObject.FromObject(new { update = new { comment = new[] { new { add = new { body = "Bug has been fixed." } } } }, fields = new { assignee = new { name = "bob" }, resolution = new { name = "Fixed" } }, transition = new { id = transition_id } });
关键说明:
- 用
new[] { ... }创建匿名数组,Newtonsoft.Json会自动将其转换为JArray,完全符合目标结构的要求 - 在数组内直接嵌套匿名对象
new { add = new { body = "Bug has been fixed." } },就能生成你需要的comment数组元素结构 - 补充了目标JSON里的
assignee字段,让最终生成的结构和需求完全匹配
如果你确实想手动构造JArray(不推荐,可读性差),也可以这样写:
JObject issue_model = JObject.FromObject(new { update = new { comment = new JArray( new JObject( new JProperty("add", new JObject(new JProperty("body", "Bug has been fixed.")) ) ) ) }, fields = new { assignee = new { name = "bob" }, resolution = new { name = "Fixed" } }, transition = new { id = transition_id } });
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

