JSON.NET is throwing "additional text found in the JSON string after the object is deserialized."

I have a Javascript control that returns a JSON string as AJAX to the server. But when I try to save Newtonsoft throws an exception

Additional text found in the JSON string after the object has been deserialized.

I tried to create a very simple JSON as shown below which threw this exception

[{
    "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
}]

      

And the API I'm calling is

DataSet dsTopics = JsonConvert.DeserializeObject<DataSet>(strTopicset);

      

where strTopicSet contains the above string. And when I paste this line into http://www.jsonlint.com/ it says Valid JSON.

Can anyone please point me to where I am going wrong. I went through the StackExchange forums on Newtonsoft and a typical error, but couldn't pinpoint the exact cause.

I am using Newtonsoft version 9.0.1.19813.

+3


source to share


2 answers


The json format is not like the dataset format.

try it.

DataTable dsTopics = JsonConvert.DeserializeObject<DataTable>(strTopicset);

      



OR: (I think this is more useful)

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

List<Topic> topics = JsonConvert.DeserializeObject<List<Topic>>(strTopicset);

      

+2


source


Your JSON does not represent valid DataSet

. Based on your example, it should look like this:

{ 
    "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}]
}

      



This JSON will represent DataSet

one containing one DataTable

named "Topics" with two columns named "Topic Name" and "OrdinalOrder" respectively.

0


source







All Articles