我有一个来自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上的属性。
答案 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":""}]