簡體   English   中英

將以@符號開頭的JSON屬性反序列化為C#動態對象?

[英]Deserialize JSON property starting with @ symbol into C# dynamic object?

如果以@符號開頭,如何將Json屬性反序列化為動態對象。

{
    "@size": "13",
    "text": "some text",
    "Id": 483606
}

我可以像這樣得到id和text屬性。

dynamic json = JObject.Parse(txt);
string x = json.text;

由於您無法在C#標記名稱中使用@,因此需要將@size映射到其他內容,例如“SizeString”(因為它是上面JSON中的字符串)。 我使用WCF數據協定屬性,但您可以使用等效的JSON屬性

...
[DataMember(Name = "@size")]
public string SizeString { get; set; }
...

以下是如何反序列化Json字符串的示例。 也許你可以適應你的情況,或澄清你的問題。

...
string j = @"{
            ""@size"": ""13"",
            ""text"": ""some text"",
            ""Id"": 483606
        }";
        MyClass mc = Newtonsoft.Json.JsonConvert.DeserializeObject<MyClass>(j);
...

[DataContract]
public class MyClass
{
    [DataMember(Name="@size")]
    public string SizeString { get; set; }
    [DataMember()]
    public string text { get; set; }
    [DataMember()]
    public int Id { get; set; }
}

如果您不打算將Json加載到預定義的類中,則可以執行以下操作...

var o = JObject.Parse(j);
var x = o["text"];
var size = o["@size"];

假設你使用Json.NET:

public class MyObject
{
    [JsonProperty("@size")]
    public string size { get; set; }

    public string text { get; set; }

    public int Id { get; set; }
}

var result = JsonConvert.DeserializeObject<MyObject>(json);

暫無
暫無

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

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