簡體   English   中英

通過Classes和object解析Json文件[C#]

[英]Parse Json file through Classes and object [C#]

我查看了有關 JSON 和 C# 的所有問題,但我沒有找到任何解決方案...我目前正在研究 C# 和對象/類聲明,但我並沒有真正了解如何使這些東西一起工作...我並沒有真正理解,例如,當進行覆蓋時,當聲明方法為私有而不是公共時,當聲明接口和類時......但是我決定舉一些例子......也許我可以理解事情是如何工作的好一點......

在這種情況下(例如)我想通過聲明的類加載一個 JSON,並為每個 JSON object 創建一個 object(以我在堆棧周圍找到的下面這個例子為例)!


這是我的 Class:

public class Cars
{
    public string Manufacturer { get; set; }
    public string Model { get; set; }
    public string Year { get; set; }
    public string LicensePlate { get; set; }
    public int KM { get; set; }
    public bool Financing { get; set; }
    public int Doors { get; set; }
    public int Cost { get; set; }
}

這是我的 JSON 示例文件:

{
    "1":
    {
        "Manufacturer": "Fiat",
        "Model": "500",
        "Year": "2017",
        "LicensePlate": "AZ978AG",
        "KM": 120000,
        "Financing" : true,
        "Doors" : 5,
        "Cost" : 6000
    }
    ,
    "2":
    {
        "Manufacturer": "BMW",
        "Model": "Serie 1",
        "Year": "2019",
        "LicensePlate": "BC978AG",
        "KM": 150000,
        "Financing" : false,
        "Doors" : 3,
        "Cost" : 12000
    }
}
  1. 所以我想加載 json,並將所有json_object (如:“1”,“2”)翻譯成從“Cars”派生的C#_object我該怎么做?

  2. 有一種動態方法允許我創建n個 object 而無需一個一個地聲明它(比如在這種情況下:我有 2 json object,是否有某種方法可以檢測一個對象中有多少個 json 對象? json 文件和正確距離對象的動態數量)?

  3. 一旦我正確設置了 ac#_object,我該如何管理它? (例如,我想打印所有 object(具有所有屬性),更改聲明的屬性之一的值(制造商,model,年份......)或從文件中刪除一次

所以我想加載 json,並將所有 json_object(如:“1”,“2”)翻譯成從“Cars”派生的 C#_object 我該怎么做?

此代碼將 Json 反序列化為字典:

var cars = JsonConvert.DeserializeObject<Dictionary<string, Cars>>(carsJson);

一旦我正確設置了 ac#_object,我該如何管理它? (例如,我想打印所有 object(具有所有屬性),更改聲明的屬性之一的值(制造商,model,年份......)或從文件中刪除一次

您可以添加、刪除或更改字典中的值,然后將其序列化回文件:

cars["1"].Year = "2020";
cars["1"].LicensePlate = "GAB293C";
cars.Remove("2");
    
var newJson = JsonConvert.SerializeObject(cars);

Output:

{
  "1": {
    "Manufacturer": "Fiat",
    "Model": "500",
    "Year": "2020",
    "LicensePlate": "GAB293C",
    "KM": 120000,
    "Financing": true,
    "Doors": 5,
    "Cost": 6000
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM