完成反序列化对象后在 json 字符串中找到的其他文本

本文关键字:文本 其他 字符串 json 反序列化 对象 | 更新日期: 2023-09-27 18:37:14

这个问题在这里被问了几次,但仍然有一些情况不起作用。

我正在使用 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"

:I尝试将单级 JSON 数据转换为数据表并成功转换,但当我尝试将其转换为数据集时,它再次失败,上面给出的异常相同。

任何人都可以对此例外和解决方案提供见解吗?

完成反序列化对象后在 json 字符串中找到的其他文本

你需要一个类似于

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)));