zei*_*dev 5 vb.net json json.net
我正在使用 Json.NET 创建 json 的定义,其结构可能会发生变化。因此,我无法简单地序列化一个类,而是使用 Json to Linq 动态创建结构。我在使用 JObject、JArray、JProperty 等创建以下结构时遇到问题
{
'external_id':'UNIQUE_ID_222222222',
'firstname':'John',
'lastname':'Smith',
'customFields':
{
'custom1':'custom1 val',
'custom2':'custom2 val',
'custom3"':'custom3 val'
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码:
Dim json As New JArray()
Dim jsonObj As New JObject( _
New JProperty("external_id", "UNIQUE_ID_222222222"),
New JProperty("firstname", "John"),
New JProperty("lastname", "Smith"))
Dim jsonCustomFields As New JArray
Dim jsonCustomObject As New JObject
jsonCustomFields.Add(jsonCustomObject)
For Each field In CustomFieldList
jsonCustomObject.Add(New JProperty(field.Label, field.Value))
Next
jsonObj.Add(New JProperty("customFields", jsonCustomFields))
json.Add(jsonContrib)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我得到了网络服务不接受的不同模式
{[
{
"external_id": "50702",
"firstname": "John",
"lastname": "Smithson",
"customFields": [
{
"custom1":"custom1 val",
"custom2":"custom2 val",
"custom3":"custom3 val"
}
]
}
]}
Run Code Online (Sandbox Code Playgroud)
我认为我应该直接向 JArray 添加属性,但这样做会导致运行时异常。
我见过在反序列化 Dictionary(String, String) 对象时创建的类似模式,但我真的不想将自定义字段添加到字典中,然后再反序列化它们。必须可以使用上述符号来创建它们。
您不需要JArray,而是使用JObject
以下代码是 C#,但您将能够弄清楚
JObject jObject = new JObject();
jObject.Add(new JProperty("external_id", "UNIQUE_ID_222222222"));
jObject.Add(new JProperty( "firstname", "John" ));
jObject.Add(new JProperty( "lastname", "Smith" ));
JObject customFields = new JObject();
//Your loop
customFields.Add( "custom1", "custom1 val" );
customFields.Add( "custom2", "custom2 val" );
customFields.Add( "custom3", "custom3 val" );
jObject.Add( new JProperty( "customFields", customFields ) );
Run Code Online (Sandbox Code Playgroud)
让我知道这是否有效
| 归档时间: |
|
| 查看次数: |
1770 次 |
| 最近记录: |