1

这个问题已经在这里被问过几次了,但在某些情况下它仍然不起作用。

我正在使用 JSON.net 读取 json 数据,并希望将 json 数据读入数据集。我有以下 json 数据字符串(它可以更复杂,可以嵌套到多个级别)

[{"timestamp": 1383033661,
  "base": "USD",
  "rates" : {
  "AED": 3.673136,
  "AFN": 56.962675,
  "ALL": 101.792499,
  "AMD": 409.561999, 
  "YER": 215.109837,
  "ZAR": 9.851868,
  "ZMK": 5230.441665,
  "ZMW": 5.395017,
  "ZWL": 322.355006}}]

我正在尝试使用以下方法将其读入数据集:

DataSet currency = (DataSet)JsonConvert.DeserializeObject(json, (typeof(DataSet)));

但它抛出异常:

"Additional text found in json string after finishing deserializing object"

注意:我尝试将单级 json 数据转换为数据表并成功转换,但是当我尝试将其转换为数据集时再次失败,并出现上述相同的异常。

任何人都可以为它提供上述异常和解决方案的见解吗?

4

1 回答 1

1

你需要一个类似于

public class Rate
{
    public string TimeSpan { get; set; }
    public string Base { get; set; }
    Dictionary<string, string> Rates { get; set; }
}

rates是 json 数组中的另一个 json 对象。

const string json = @"{
  ""timestamp"": 1383033661,
  ""base"": ""USD"",
  ""rates"" : {
      ""AED"": 3.673136,
      ""AFN"": 56.962675,
      ""ALL"": 101.792499,
      ""AMD"": 409.561999, 
      ""YER"": 215.109837,
      ""ZAR"": 9.851868,
      ""ZMK"": 5230.441665,
      ""ZMW"": 5.395017,
      ""ZWL"": 322.355006
   }
}";

Rate currency = (Rate)JsonConvert.DeserializeObject(json, (typeof(Rate)));
于 2013-10-29T14:05:38.957 回答