【发布时间】:2018-12-07 03:32:29
【问题描述】:
我想用 VB.NET 创建这个 JSON 内容,并且可以正确实现 WriteStartArray()。内容需要成为 REST API 调用的负载。
创建令牌结构对我来说有点挑战性。我已经习惯了 XML,并且必须适应我正在调用的 API 的新表示。
如果能将 Newtonsoft 代码直观地映射到一个简单而高级的 JSON 文档,那就太好了。我的情况是我正在构建一个集成原型。试图使最终解决方案尽可能简单,以便其他爱好者可以轻松地在 VB.NET 中使用 JSON。
在使用https://dotnetfiddle.net/ 时,我通过一个工作示例学得更快。
样本数据:
{
"cilist": [
{
"id": "bppmwsserver_6",
"className": "BMC_ComputerSystem",
"attributeMap": {
"HomeCell": "pncell_bppmwsserver",
"PNReadAcl": "[]",
"WriteSecurity": "[Full Access]",
"PNWriteAcl": "[]",
"DATABASE_event_max_sev": "OK",
"PriorityWatchdog": "NO",
"UsingOrganization": "",
"OwnerContact": "",
"Domain": "calbro.com",
"status": "OK",
"maintenance_mode": "NO",
"schedule_status": "IN",
"HostName": "bppmwsserver",
"manual_status": "NONE",
"root_causes": "[]",
"computed_priority": "PRIORITY_5",
"DeviceID": "1",
"impacting_open_event_max_sev": "OK",
"InstanceId": "",
"USER_TRANSACTIONS_event_max_sev": "OK",
"ImpactCostPerSecOut": "0.000000e+000",
"APPLICATION_event_max_sev": "OK",
"SYSTEM_event_max_sev": "OK",
"Company": "",
"OwnerName": "",
"Description": "Test CI",
"sub_status": "NONE",
"UsingOrganizationId": "-1",
"any_event_max_sev": "OK",
"Priority": "PRIORITY_5",
"Name": "bppmwsserver.calbro.com",
"publish_env_id": "",
"mc_udid": "bppmwsserver_6",
"ReadSecurity": "[Full Access]",
"PrimaryCapability": "Server"
}
}
]
}
示例代码:
Public Shared Function DefineJsonServerCI() As String
Dim JsonCI As New JTokenWriter()
Try
JsonCI.WriteStartObject()
JsonCI.WritePropertyName("cilist")
JsonCI.WriteStartArray()
JsonCI.WritePropertyName("id")
JsonCI.WriteValue("CI ID")
JsonCI.WritePropertyName("className")
JsonCI.WriteValue("BMC_ComputerSystem")
JsonCI.WriteEndArray()
JsonCI.WriteEndObject()
Catch ex As Exception
Console.WriteLine(" Exception:{0};Create JSON CI;{1}", ex.Message, ex.Source)
End Try
Return JsonCI
End Function
有什么建议吗? 谢谢,O.
【问题讨论】:
-
感谢布赖恩提供的信息。我不想最终得到很多模型。每个 API 调用都有自己的结构,其中一些可能是动态的。你会碰巧有一些示例代码吗?
标签: json xml vb.net rest json.net