JSON的正确格式(Json.NET

时间:2011-09-27 11:34:12

标签: json json.net

我试图在asp.net中使用json字符串,google告诉我这个Json.NET库。

我有一个来自php webservice的以下json:

"[{\"AccountID\":\"demo\",\"UserID\":\"1\",\"Password\":\"*blank*\",\"Active\":\"1\",\"Name\":\"\"}][{\"AccountID\":\"demo\",\"UserID\":\"1\",\"Password\":\"*blank*\",\"Active\":\"1\",\"Name\":\"\"}]"

我发现该库无法加载网址,所以我不得不使用System.Net.WebClient;好到目前为止。 问题是做

var json = webClient.DownloadString(url); //gives the json above               
object user = JsonConvert.DeserializeObject(json);
// or User user =JsonConvert.DeserializeObject<User>(json); wont work

不会工作的库说“解析值后遇到意外的字符”

那么,我的json是否格格不入?我用php中的json_encode($ resultset)构造它,所以我想知道发生了什么。

我的User对象只有json上的属性。

2 个答案:

答案 0 :(得分:2)

首先,您的JSON字符串在整个结果周围有双引号,在每个其他双引号之前都有反斜杠。我假设这是一个从VisualStudio调试器中复制它的工件(它显示如下)。

如果我们删除这些反斜杠,我们会得到以下JSON:

[{"AccountID":"demo","UserID":"1","Password":"*blank*","Active":"1","Name":""}]
[{"AccountID":"demo","UserID":"1","Password":"*blank*","Active":"1","Name":""}]

这是两个相同的JSON数组。但有效的JSON响应由单个JSON对象或单个JSON数组组成。此回复无效。

似乎两个JSON响应连接在一起,导致构造无效。

答案 1 :(得分:0)

那是因为你的json字符串格式不正确
如果你要使用括号[,那么json只有一个数组。因为你的声明可能是一个数组。把你的字符串(我编辑)放到this site中看看结果自己。

[{"AccountID":"demo","UserID":"1","Password":"*blank*","Active":"1","Name":""},{"AccountID":"demo","UserID":"1","Password":"*blank*","Active":"1","Name":""}]