【问题标题】:Correct Format for JSON (Json.NETJSON 的正确格式(Json.NET
【发布时间】:2011-09-27 11:34:12
【问题描述】:

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

我有以下来自 php 网络服务的 json:

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

我发现库无法加载 url,所以我不得不使用 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) 构造它,所以我想知道发生了什么。

我的用户对象只有我在 json 上的属性。

【问题讨论】:

    标签: json json.net


    【解决方案1】:

    首先,您的 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 响应连接在一起,导致构造无效。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-02
        • 1970-01-01
        相关资源
        最近更新 更多