在 C# 中解析 JSON

  • 本文关键字:JSON c# json json.net
  • 更新时间 :
  • 英文 :


我有一个 JSON 字符串,我要发送到 c# 服务器。 它包括事件对象的数组和关系对象的数组。 关系对象描述数据库表关系。

但是,我无法从服务器上的 JSON 获取数据。 服务器上不存在要脱轨的对象,当我尝试以下操作时 JSON.net 会抛出解析错误:

// Both throw parse errors
JObject o = JObject.Parse(Request.Form.ToString());
JsonConvert.DeserializeObject<MobileEvents>(Request.Form.ToString());

该 JSON:

{
    "CreateEvents": {
        "Event": [
            {
                "Id": "1",
                "Subject": "Hire a Clown"
            }
        ],
        "Relationship": [
            {
                "Primary": "Table1",
                "Secondary": "Table2",
                "Field": [
                    {
                        "Table1Id": "1",
                        "Table2Id": [
                            "101"
                        ]
                    }
                ]
            },
            {
                "Primary": "Table1",
                "Secondary": "Table3",
                "Field": [
                    {
                        "Table1Id": "1",
                        "Table3Id": [
                            "200025"
                        ]
                    }
                ]
            },
            {
                "Primary": "Table1",
                "Secondary": "Table4",
                "Field": [
                    {
                        "Table1Id": "1",
                        "Table4Id": [
                            "3"
                        ]
                    }
                ]
            }
        ]
    }
}

Request.Form.ToString()会返回"a=1&b=3"这样的结果,这绝对不是你需要的。

如果要在提交表单时传递值,则可以使用 Request.Form["your-key"] 来获取值。

如果要通过 http 正文传递值,则可以使用 new StreamReader(Request.InputStream).ReadToEnd() 获取整个 JSON 字符串。

我认为您在获取过程中有一个错误...

这不是

this.Request.Form.ToString(); // see http://stackoverflow.com/questions/7065979/why-is-the-return-value-of-request-form-tostring-different-from-the-result-of for output

相反,它应该是

this.Request.Form["myInputNAME"].ToString();

重要 - 真正使用input/select/...-元素的name属性

无论如何:我想鼓励你,使用例如。 <asp:HiddenField runat="server" ID="foo" /> .当您有一个服务器控件时,您可以通过在服务器端执行简单的this.foo.Value来访问其值,而在客户端,您可以访问输入字段,如document.getElementById('<%= this.foo.ClientID %>')

相关内容

  • 没有找到相关文章

最新更新