JSON.NET在完成反序列化对象后抛出了在JSON字符串中找到的附加文本."

Dee*_*van 6 javascript c# json json.net

我有一个Javascript控件,它将JSON字符串作为AJAX返回给服务器.但是当我试图保存时,Newtonsoft正在抛出异常

完成反序列化对象后在JSON字符串中找到的附加文本.

我尝试构建一个非常简单的JSON,如下所示抛出此异常

[{
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}, {
    "TopicName": "Hello World",
    "OrdinalOrder": 0
}]
Run Code Online (Sandbox Code Playgroud)

我正在调用的API是

DataSet dsTopics = JsonConvert.DeserializeObject<DataSet>(strTopicset);
Run Code Online (Sandbox Code Playgroud)

其中strTopicSet包含上面的字符串.当我在http://www.jsonlint.com/上粘贴上面的字符串时,它会显示Valid JSON.

有人可以指导我出错的地方.我确实通过了Newtonsoft上的StackExchange论坛和典型的错误,但无法确定原因.

我使用的是牛顿软件的9.0.1.19813版本.

lev*_*ent 5

json格式看起来不像数据集格式。

尝试这个。

DataTable dsTopics = JsonConvert.DeserializeObject<DataTable>(strTopicset);
Run Code Online (Sandbox Code Playgroud)

或:(我认为这更有用)

public class Topic
{
    public string TopicName { get; set; }
    public int OrdinalOrder { get; set; }
}

List<Topic> topics = JsonConvert.DeserializeObject<List<Topic>>(strTopicset);
Run Code Online (Sandbox Code Playgroud)


Equ*_*lsk 3

您的 JSON 不代表有效的DataSet. 根据您给出的示例,它应该如下所示:

{ 
    "Topics": 
        [{"TopicName":"Hello World","OrdinalOrder":0},
         {"TopicName":"Hello World","OrdinalOrder":0},
         {"TopicName":"Hello World","OrdinalOrder":0},
         ... etc etc more rows ...
         {"TopicName":"Hello World","OrdinalOrder":0},
         {"TopicName":"Hello World","OrdinalOrder":0}]
}
Run Code Online (Sandbox Code Playgroud)

此 JSON 将表示DataSet包含一个名为“Topics”的单个内容DataTable,其中有两列分别名为“TopicName”和“OrdinalOrder”。