我需要以特定格式將資料決議為 JSON,它應該如下所示(注意陣列中有多種型別的物件)。
{
"member details":
[
{
"name": "John Doe",
"type": "faculty",
"teaching years": "5",
"faculty code": "f154"
},
{
"name": "Mary Storm",
"type": "student",
"studying years": "3",
"student code": "s19"
}
]
}
如何將多個物件添加到 JSON 陣列?
我在考慮介面。但是,如果沒有一個屬性是共同的呢?
uj5u.com熱心網友回復:
使用IEnumerable<T>whereT是共享的基本型別(object例如可以是 ):
using System;
using System.Text.Json;
public class Program
{
public static void Main()
{
var values = new object[]
{
new A { PropertyA = "A value" },
new B { PropertyB = "B value" },
};
Console.WriteLine(JsonSerializer.Serialize(values));
}
public class A
{
public string PropertyA { get; set; }
}
public class B
{
public string PropertyB { get; set; }
}
}
https://dotnetfiddle.net/R2zUi2
uj5u.com熱心網友回復:
A. 沒有共同屬性
但是,如果沒有一個屬性是共同的呢?
在這種情況下,物件不應該在同一個集合中。
B. 一些常見的屬性
B1。單獨的集合
將不同型別的物件分成不同的集合。它確實使序列化和反序列化變得容易。
public class Org
{
List<Students> Students {get; set;}
List<Teacher> Teachers {get; set;}
}
var teachers = new Teacher[] {
new Teacher { FirstName = "Lucy", FacultyYears = 3},
};
var students = new Teacher[] {
new Student { FirstName = "Luca", StudyingYears = 3}
};
var org = new Org
{
Teachers = teachers,
Students = students
}
B2。使用基本型別
而不是object[]像 Moho 建議的那樣使用,我認為使用基類Person會更正確:
var members = new Person[] {
new Teacher { FirstName = "Lucy", FacultyYears = 3},
new Student { FirstName = "Luca", StudyingYears = 3}
};
class Person {
public string FirstName {get; set;}
}
class Teacher : Person {
public int FacultyYears { get; set;}
}
class Student : Person {
public int StudyingYears { get; set;}
}
關于多型集合和 json 的注意事項
請注意,如果您使用多型集合反序列化(json -> 物件)并不那么明顯。
B3。單一共享模型
擁有單一型別可能更容易(這實際上取決于場景)。對于顯示的集合,它可能是:
class Member {
public string FirstName {get; set;}
public Role Role {get;set;}
public int Years {get; set;} // If student this meas student years, if teacher it means faculty years
public string Code {get; set;} // If student this means student code, if teacher this means faculty years
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/498397.html
