用json对象反序列化json对象数组

时间:2015-04-06 15:05:40

标签: c# arrays json serialization

如何在c#中反序列化json对象数组?这是我的json:

[{"id":"255521115", "user":"username","userinfo":{"id":"158","online":"false"}}]

我有这个代码来获取用户名:

 [JsonProperty("user")]
 public string Username { get; set; }

如何获取userinfo的值?我想要在userinfo对象中的在线值。

2 个答案:

答案 0 :(得分:5)

VS2013有一个很酷的功能。如果将JSON复制到剪贴板并在Visual Studio中单击EDIT -> Paste Special -> Paste JSON as Classes,它将为您生成类结构。您只需要重命名某些属性即可。在您的情况下,类的修改版本将是:

public class Obj
{
    public string Id { get; set; }

    [JsonProperty("User")]
    public string UserName { get; set; }

    public Userinfo Userinfo { get; set; }
}

public class Userinfo
{
    public string Id { get; set; }
    public string Online { get; set; }
}

然后您可以轻松地反序列化您的JSON字符串:

var json = @"[{""id"":""255521115"", ""user"":""username"",""userinfo"":{""id"":""158"",""online"":""false""}}]";
var objs = JsonConvert.DeserializeObject<IList<Obj>>(json);

答案 1 :(得分:0)

public class classname
{
   //Create property to hold value
    public string Username { get; set; }
}

现在反序列化将起作用:

using (var sr = new StringReader(json))
using (var jr = new JsonTextReader(sr))
{
    var js = new JsonSerializer();
    var u = js.Deserialize<classname>(jr);
    Console.WriteLine(u.Username );
}

我认为这有助于您反序列化