我在C#中创建了一个对象列表,但我很难理解如何在它的开头添加一个属性(这可能不是正确的术语(:
这可能真的很明显,我不确定我需要什么来谷歌!任何帮助都将不胜感激!
我想做的事:
{
'data' : [ <--Add this in (is this a property of the object?)
{
'valueName1': 'value1',
'valueName2': 'value2',
'valueName3': 'value3',
},
{
'valueName1': 'value1',
'valueName2': 'value2',
'valueName3': 'value3',
},
]}
我现在有什么!
[
{
'valueName1': 'value1',
'valueName2': 'value2',
'valueName3': 'value3',
},
{
'valueName1': 'value1',
'valueName2': 'value2',
'valueName3': 'value3',
},
]
这就是我目前在C#中得到的:
result= new List<TestList> { };
foreach (var issueData2 in myDeserializedClass.issues)
{
result.Add(new TestList { valueName1 = issueData2.fields.summary,
valuename2 = issueData2.fields.created,
valuename3 = issueData2.fields.updated, });
}
string jsonString = JsonConvert.SerializeObject(newtonresult);
此类:
public class TestList
{
public String valuename1 { get; set; }
public String valuename2 { get; set; }
public String valuename3 { get; set; }
}
请不要为了让JSON正确显示而违反C#命名约定(属性具有PascalCaseNames(;常见的json序列化程序支持的属性允许您以不同于json:的方式命名C#属性
public class TestList
{
[JsonProperty("valuename1")]
public String ValueName1 { get; set; }
[JsonProperty("valuename2")]
public String ValueName2 { get; set; }
[JsonProperty("valuename1")]
public String ValueName3 { get; set; }
}
如果你需要的话;通常还可以配置序列化程序,使其生成camelCaseJsonPropertyNames,即使C#名称是PascalCase(例如(
正如GSerg所评论的,你可以把你的测试列表放在另一个类中:
public class Wrapper {
[JsonProperty("data")]
public List<TestList> Data { get; set;}
}
然后创建:
result= new List<TestList> { };
foreach (var issueData2 in myDeserializedClass.issues)
{
result.Add(new TestList { valueName1 = issueData2.fields.summary,
valuename2 = issueData2.fields.created,
valuename3 = issueData2.fields.updated, });
}
var ser = new Wrapper { Data = result };
string jsonString = JsonConvert.SerializeObject(ser);
如果你想要的话,实际上你甚至不需要类Wrapper。。您也可以使用匿名类型:
string jsonString = JsonConvert.SerializeObject(new{ data = result });
因此,您基本上需要属性data,它是对象TestList类的数组
public class Test{
public IEnumerable<TestList> data {get; set'}
}
现在您可以串行化数据
string jsonString = JsonConvert.SerializeObject<Test>(newtonresult);