【发布时间】:2020-06-04 11:19:33
【问题描述】:
这是我要自定义序列化的类:
public class MyClass
{
public string Key {get; set;}
public IEnumerable<string> Value {get; set;}
}
如果我有它的列表,正常的序列化会产生以下输出:
[
{
"Key": "MyKey1",
"Value": [
"Value1",
"Value2"
]
},
{
"Key": "MyKey2",
"Value": [
"Value3",
"Value4"
]
}
]
我想要的是从 json-result 中删除属性名称,如下所示:
[
{
"MyKey1": [
"Value1",
"Value2"
]
},
{
"MyKey2": [
"Value3",
"Value4"
]
}
]
所以我决定像这样实现一个自定义的 JsonConverter:
public class MyClassJsonConverter : JsonConverter<MyClass>
{
public override void Write(Utf8JsonWriter writer, MyClass value, JsonSerializerOptions options)
{
//custom code goes here
writer.WriteStartArray(value.Key);
foreach (var val in value.Value)
writer.WriteStringValue(val);
writer.WriteEndArray();
}
}
但这会产生无效的 json:
[
"MyKey1": [
"Value1",
"Value2"
],
"MyKey2": [
"Value3",
"Value4"
]
]
如何解决?
【问题讨论】:
-
你应该写开始和结束元素
-
为什么不考虑使用
Dictionary<string, IEnumerable<string>>数据结构? -
Dictionary<string, IEnumerable<string>> p = new Dictionary<string, IEnumerable<string>>();p.Add("MyKey1", new List<string> { "Value1", "Value2" });p.Add("MyKey2", new List<string> { "Value3", "Value4" });Console.WriteLine(JsonConvert.SerializeObject(p));输出:{"MyKey1":["Value1","Value2"],"MyKey2":["Value3","Value4"]}
标签: c# json .net-core system.text.json jsonconverter