Json.NET解码多维数组

时间:2014-08-25 07:43:45

标签: c# php json.net

我是.Net的新手,我正在为我的网站创建一个桌面应用程序。我使用JSON和 Json.NET 传递数据但是每次我尝试解码此字符串时都会收到错误。什么可能是错的?如何解码多维数组。

这是我正在解码的字符串

{
   "api_ver":"1.0",
   "request":"user-account-exists",
   "date":"2014-08-25 09:57:16",
   "data":
   {
      "user_account_exists":1
   }
}

我的代码在这里

json_data = string.Empty;
try
{                
    json_data = webclient.DownloadString("http://api.mysite.com/?ruser-account-exists");
}
catch (Exception e)
{                
    Logger.Log(e.Message);
}

_api = !string.IsNullOrEmpty(json_data) ? JsonConvert.DeserializeObject<api>(json_data) : 
                                          new api();

错误如下所示

  

读取字符串时出错。意外的令牌:StartObject。路径'数据',行   1,位置86。

我想将此数组反序列化为字典

2 个答案:

答案 0 :(得分:3)

发生此错误是因为api类没有充分建模json。

该模型应类似于以下模型(使用Json2CSharp生成):

public class Api
{
    public string api_ver { get; set; }
    public string request { get; set; }
    public string date { get; set; }
    public Data data { get; set; }
}

public class Data
{
    public int user_account_exists { get; set; }
}

您可以选择使用dynamic

dynamic values = JsonConvert.DeserializeObject<dynamic>(json_data);
bool exists = (int) values.data.user_account_exists == 1;

答案 1 :(得分:0)

试试这个?

public class api
{
    public string api_ver { get; set; }
    public string request { get; set; }
    public string date { get; set; }
    public Data data { get; set; }
}

public class Data
{
    public int user_account_exists { get; set; }
}

api apiObj = JsonConvert.DeserializeObject<api>(json_data) ;