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.
source to share
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);
source to share
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.
source to share