要解決這個問題,您需要顯式地將 JArray 轉換為 List
以下是具體的做法:
假設 JSON 形式
假設您從某個地方獲得的 JSON 是這樣的:
json
[
{
"Id": 1,
"Name": "Company A",
"Location": "Location A"
},
{
"Id": 2,
"Name": "Company B",
"Location": "Location B"
}
]
模型類 tblCompany
首先,確保您的模型類 tblCompany 是這樣的:
csharp
namespace WebModel.Models
{
public class tblCompany
{
public int Id { get; set; }
public string Name { get; set; }
public string Location { get; set; }
}
}
反序列化 JSON
以下是從 JArray 反序列化為 List
csharp
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using WebModel.Models;
public class Program
{
public static void Main()
{
// 假設您獲得了一個 JSON 陣列
string jsonArray = "[{\"Id\":1,\"Name\":\"Company A\",\"Location\":\"Location A\"},{\"Id\":2,\"Name\":\"Company B\",\"Location\":\"Location B\"}]";
// 將 JSON 字符串解析為 JArray
JArray jArray = JArray.Parse(jsonArray);
// 反序列化為 List<tblCompany>
List<tblCompany> companies = jArray.ToObject<List<tblCompany>>();
// 使用反序列化的數據
foreach (var company in companies)
{
Console.WriteLine($"Id: {company.Id}, Name: {company.Name}, Location: {company.Location}");
}
}
}
注意事項
引用 Newtonsoft.Json:確保您的專案中引用了 Newtonsoft.Json 庫。如果沒有引用,可以使用 NuGet 包管理器安裝:
bash
dotnet add package Newtonsoft.Json
JSON 格式一致:確保 JSON 字符串的結構與 tblCompany 類中的屬性對應。
總結
要將 JArray 轉換為 List<WebModel.Models.tblCompany>,您需要使用 ToObject<List<tblCompany>>() 方法來反序列化 JSON 陣列。這樣可以正確地將 JSON 陣列轉換為所需的列表類型,避免類型轉換錯誤。