簡體   English   中英

無法反序列化當前 JSON object 因為該類型需要 JSON 數組(例如 [1,2,3])才能正確反序列化

[英]Cannot deserialize the current JSON object because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly

我剛開始使用 Newtonsoft JSON.Net 在 C# 中使用 JSON,並且在反序列化以下響應時遇到問題。 這是它的第一部分。

"response":{
    "sxt_func_ack":
        {"sxt_func_ack":
            [
                {"coNo":1,"correlation_data":"","data1":"11036990-00","errorNo":0 ...}
            ]
        },

這是 class 的開頭

public class response_cls : Response
{
    public response_cls()
    {
        sxapi_oehdr = new Generic.List<sxapi_oehdr_cls>();
        sxapi_oeitm = new Generic.List<sxapi_oeitm_cls>();
        sxt_func_ack = new Generic.List<sxt_func_ack_cls>();
    }

    public Generic.List<sxt_func_ack_cls> sxt_func_ack { get; set; }
    public Generic.List<sxapi_oehdr_cls> sxapi_oehdr { get; set; }
    public Generic.List<sxapi_oeitm_cls> sxapi_oeitm { get; set; }
}

我需要對 class 做什么才能反序列化此數據?

謝謝。

你的 json 中的方括號表示該屬性是一個集合。 從您的摘錄中有點不清楚,但我可以想到兩個適合您提供的示例的模式。 兩者都使用以下代碼成功反序列化:

class Program
{
    static async Task Main(string[] args)
    {
        var json = await File.ReadAllTextAsync("json1.json");
        Body body = JsonConvert.DeserializeObject<Body>(json);
    }
}

首先,兩個sxt_func_ack屬性是不同類型的:

public class Body
{
    public Response Response { get; set; }
}
public class Response
{
    public Class1 Sxt_func_ack { get; set; }
}

public class Class1
{
    public IEnumerable<Class2> Sxt_func_ack { get; set; }

}

public class Class2
{
    public int CoNo { get; set; }
    public string Correlation_data { get; set; }
    public string Data1 { get; set; }
    public int ErrorNo { get; set; }
}

在第二個中,兩個sxt_func_ack屬性都是同一類型:

public class Body
{
    public Response Response { get; set; }
}
public class Response
{
    public Class1 Sxt_func_ack { get; set; }
}

public class Class1
{
    public IEnumerable<Class1> Sxt_func_ack { get; set; }
    public int CoNo { get; set; }
    public string Correlation_data { get; set; }
    public string Data1 { get; set; }
    public int ErrorNo { get; set; }

}

暫無
暫無

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

相關問題 無法將當前 JSON object(例如 {“name”:“value”})反序列化為類型需要 JSON 數組(例如 [1,2,3] 才能正確反序列化) 無法將當前 JSON objectT 反序列化為類型,因為該類型需要 JSON 數組(例如 [1,2,3])才能正確反序列化 無法將當前JSON數組(例如[1,2,3])反序列化為類型”,因為該類型需要JSON對象(例如{“ name”:“ value”}) 無法將當前JSON對象反序列化為類型&#39;WindowsService1 ...需要JSON數組(例如[1,2,3])才能正確反序列化 無法將 JSON 數組(例如 [1,2,3])反序列化為類型“ ”,因為類型需要 JSON 對象(例如 {&quot;name&quot;:&quot;value&quot;})才能正確反序列化 無法將 JSON 數組(例如 [1,2,3])反序列化為類型“”,因為類型需要 JSON object(例如,將 {“name”} 正確地反序列化為“value”: 無法將當前 JSON 數組(例如 [1,2,3])反序列化為類型“ConsoleAppTest01.Location”,因為該類型需要 JSON ZA8CFDE6331BD59EB2AC96F8911ZC4 無法將JSON數組(例如[1,2,3])反序列化為類型&#39;&#39;,因為類型需要JSON對象(例如{“ name”:“ value”}) 無法將當前 JSON 對象(例如 {&quot;name&quot;:&quot;value&quot;})反序列化為類型 &#39;Value[]&#39;,因為該類型需要 JSON 數組(例如 [1,2,3]) 反序列化Json對象時出現“因為類型需要JSON數組(例如[1,2,3])才能正確反序列化”錯誤
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM