我的最终目标是生成具有以下结构的JSON文件
{
"Info": [
{
"Detail1": "value1",
"Detail2": "value2",
"Detail3": "value3",
"Fields": [
{
"Description": "Field1",
"Value": "value4"
},
{
"Description": "Field2",
"Value": "value5"
},
{
"Description": "Field3",
"Value": "value6"
}
,
{
... continue for another 100~ fields
},
]
}
]
}
此JSON文件包含许多标头详细信息,分别由Detail1
,Detail2
和Detail3
表示。然后,它包含一个数组Fields
,该数组包含大约100个独立的元素,每个字段均包含唯一的描述和值,所有这些都是已知的。 Fields
元素的值存储在单独的类中。
请注意,Detail1
和value1
等只是占位符名称,实际使用的数据是不同的。
目前,我必须生成此JSON的代码非常长,丑陋且经过硬编码,但这并不是一个很好的解决方案。如果有其他可用的解决方案,我宁愿将代码替换为其他代码。
这是我目前拥有的代码
JObject result = new JObject(
new JProperty("Info",
//new JObject(
new JArray(
new JObject(
new JProperty("Detail1", preJson.value1),
new JProperty("Detail2", preJson.value2),
new JProperty("Detail3", preJson.value3),
new JProperty("Fields",
new JArray(
new JObject(
new JProperty("Description", "Field1"),
new JProperty("Value", preJson.Field1)),
new JObject(
new JProperty("Description", "Field2"),
new JProperty("Value", preJson.Field2)),
new JObject(
new JProperty("Description", "Field3"),
new JProperty("Value", preJson.Field3)),
new JObject(
...continue for 100~ fields
)))))));
preJson
只是一个DTO对象,它包含JSON文件中所需的所有信息,并用于在重组为JSON格式之前组织数据。
我能想到的唯一解决方案是在文本文件或数组中包含Fields
中每个元素的描述,然后以某种方式遍历数组并依次提取每个元素的详细信息,而不是在新的JObject中对每个单独的元素进行硬编码,但是我不确定这是否还能工作。
答案 0 :(得分:3)
您可以为模型生成类,例如:
public class Field
{
public string Description { get; set; }
public string Value { get; set; }
}
public class Info
{
public string Detail1 { get; set; }
public string Detail2 { get; set; }
public string Detail3 { get; set; }
public List<Field> Fields { get; set; }
}
public class RootObject
{
public List<Info> Info { get; set; }
}
接下来填充数据,然后假设您使用的是Newtonsoft JSON.Net,您可以像这样对RootObject
进行序列化:
var output = JsonConvert.SerializeObject(product);