簡體   English   中英

c#: string(json) 到 object(generic) 的轉換增加了額外的大括號

[英]c#: string(json) to object(generic) conversion adds extra braces

我有一個 json 作為字符串。 我想把它轉換成一個對象。 但是在轉換過程中,一切都很好,除了我在對象之外得到了一個額外的括號。 那不是有效的 json。

string st = "{\"Category\":\"test\"}";
var someType = JsonConvert.DeserializeObject(st);
//output of someType is {{"Category": "test"}}
//expected output {"Category": "test"}

我也試過“JObject.Parse()”。 但結果是一樣的。 它為對象添加了額外的大括號。 我希望輸出強制為對象。

有什么我做錯了嗎? 我錯過了什么嗎?

在您要求的上下文中, JsonConver.DeserializeObject(st)正在做您要求它做的事情。 您要求它將“對象” {"Category": "test"}的字符串表示形式轉換為 json 對象。 您的方法的問題在於,編譯器不知道如何將該字符串解釋為對象以外的任何內容,因此它將其包裝在 JSON 對象中。

要獲得您正在尋找的結果,而不聲明 POCO(即反序列化匿名類型),您需要執行以下操作

    var definition = new { Category = "" };
    var data = @"{'Category':'Test'}";
    var me = JsonConvert.DeserializeAnonymousType(data, definition);
    Console.WriteLine(me);

根據評論中的要求,添加另一個解決方案。

    dynamic deserialized = JObject.Parse("{\"Category\":\"test\"}");

暫無
暫無

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

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