0

我正在尝试反序列化(使用 Newtonsoft)JSON 并转换为 c# 中的列表。它向我抛出错误“无法将 JSON 对象反序列化为类型 'System.Collections.Generic.List`1[obJson]'。”

这是我的 JSON 字符串:

  string webContent = "{\"searchResults\":     [{\"gefId\":0,\"resultNumber\":1,\"distance\":4.2839,\"sourceName\":\"MQA.MQ_34172_HD\",\"name\":\"USER_DEFINED\"},{\"gefId\":0,\"resultNumber\":1,\"distance\":4.2839,\"sourceName\":\"MQA.MQ_34172_HD\",\"name\":\"USER_DEFINED\"}]}";

转换,这一行抛出错误:

  List<obJson> result = JsonConvert.DeserializeObject<List<obJson>>(webContent);

我的自定义课程:

public class SearchResults
{
    public int gefId { get; set; }
    public int resultNumber { get; set; }
    public decimal distance { get; set; }
    public string sourceName { get; set; }
    public string name { get; set; }
}

public class obJson
{
    public SearchResults SearchResults { get; set; }
}
4

3 回答 3

2

由于您的 json 是一个对象,其searchResults成员包含一个数组,obJson因此如下更改您的

public class obJson
{
    public List<SearchResults> searchResults { get; set; }
}

并反序列化为

obJson result = JsonConvert.DeserializeObject<obJson>(webContent);
于 2012-05-29T09:48:15.560 回答
1

问题出在您的模型上,或者与您发送的数据相反。您正在接收一个数组并希望将其反序列化为普通对象。你可以改变你的模型

public class obJson
{
    public SearchResults[] SearchResults { get; set; }
}

你的结果将被反序列化就好了。

于 2012-05-29T09:48:45.647 回答
0

您的 json 无效。

Parse error on line 1:
{    \"searchResults\": [
-----^
Expecting 'STRING', '}'

http://jsonlint.com/

于 2012-05-29T09:38:38.217 回答