Google Code Prettify

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Cannot implicitly convert type 'Newtonsoft.Json.Linq.JObject' to 'WebModel.Models.tblCompany''

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Cannot implicitly convert type 'Newtonsoft.Json.Linq.JObject' to 'WebModel.Models.tblCompany'' 這個錯誤表示您正在嘗試將 JObject 類型的值隱式轉換為 tblCompany 類型。這通常是由於您直接將 JSON 物件指派給一個強類型物件引起的。

為了解決這個問題,您需要顯式地將 JObject 轉換為 tblCompany。這可以通過 JsonConvert 類的 ToObject 方法來實現。以下是具體的範例:

假設 JSON 物件

假設您從某個地方獲得的 JSON 是這樣的:

json
{
    "Id": 1,
    "Name": "Company A",
    "Location": "Location A"
}



模型類 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

以下是從 JObject 反序列化為 tblCompany 的範例:

csharp
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using WebModel.Models;

public class Program
{
    public static void Main()
    {
        // 假設您獲得了一個 JSON 物件字符串
        string jsonObject = "{\"Id\":1,\"Name\":\"Company A\",\"Location\":\"Location A\"}";

        // 將 JSON 字符串解析為 JObject
        JObject jObject = JObject.Parse(jsonObject);

        // 反序列化為 tblCompany
        tblCompany company = jObject.ToObject();

        // 使用反序列化的數據
        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 類中的屬性對應。

完整範例
以下是完整的程式碼範例,包括 tblCompany 類和 JSON 反序列化範例:

csharp
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using WebModel.Models;

namespace JsonConvertExample
{
    public class Program
    {
        public static void Main()
        {
            // 假設您獲得了一個 JSON 物件字符串
            string jsonObject = "{\"Id\":1,\"Name\":\"Company A\",\"Location\":\"Location A\"}";

            // 將 JSON 字符串解析為 JObject
            JObject jObject = JObject.Parse(jsonObject);

            // 反序列化為 tblCompany
            tblCompany company = jObject.ToObject();

            // 使用反序列化的數據
            Console.WriteLine($"Id: {company.Id}, Name: {company.Name}, Location: {company.Location}");
        }
    }

    public class tblCompany
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Location { get; set; }
    }
}



這個範例展示了如何從 JObject 反序列化為 tblCompany 類型,避免了類型轉換錯誤。這樣可以確保 JSON 物件正確地轉換為所需的強類型物件。