c# - 使用 C# 构造 JSON
问题描述
我正在为我的 Odata 端点调用的 POST 方法构建一个 JSON 主体,如下所示
Newtonsoft.Json.Linq.JObject sample;
sample = new Newtonsoft.Json.Linq.JObject();
sample["status"] = "New";
sample[ "PROJECT@odata.bind"] = "["+"/PROJECT('" + prjBarcode + "')"+"]";
其中 PROJECT@odata.bind 是一个数组。我正在寻找要构建的 JSON
"status": "New",
"PROJECT@odata.bind":["/PROJECT('PJ1')"]
但是使用我上面的代码,它正在生成
"PROJECT@odata.bind":"[/PROJECT('PJ1')]"
[]
我该如何""
解决这个问题
解决方案
在 JSON 中,方括号 ( [...]
) 表示一个数组,因此您需要创建一个,例如:
var array = new Newtonsoft.Json.Linq.JArray(new string[] {"/PROJECT('" + prjBarcode + "')" });
sample["PROJECT@odata.bind"] = array;
您还应该考虑使用插值字符串,它使您的代码更具可读性:
var array = new Newtonsoft.Json.Linq.JArray(new string[] {"/PROJECT('{prjBarcode}')" });
不过,我一开始不会像这样构建 JSON。您应该创建一个与您的结构相匹配的具体类型并将其序列化。例如:
public class Data
{
public string Status { get; set; }
[JsonProperty("PROJECT@odata.bind")]
public string[] Projects { get; set; }
}
var json = JsonConvert.SerializeObject(new Data
{
Status = "New",
Projects = new string[] {$"/PROJECT('{prjBarcode}')" }
});
推荐阅读
- sql - 必须声明标量变量 - 即使定义了该变量(Q&A)
- javascript - 如何在 React 中使用 JavaScript 从数组中删除对象元素
- docker - 在 Windows 10 上的 docker 中运行具有多个节点的 couchbase 集群
- python - 使此代码针对多个 excel 文件运行
- regex - bash:按模式、空字段和多次出现提取子字符串
- hive - 为什么在 Hive 查询中选择较少的列时会发生 Java OutOfMemoryError?
- r - 如何通过 R 中的列名重命名多个数据框?
- assembly - 比较数字处理器中的有符号和无符号值
- javascript - 从 WebApi 提供分布式 Vue 组件
- ios - 如何在 SwiftUI 中创建单个 EnvironmentObject 实例