c# - 从JSON读取,数据不显示

标签 c# javascript asp.net json webforms

当我尝试从 javascript 访问 json 中的元素时,遇到了这个奇怪的问题。我像这样从 url 中检索 json 字符串,

        // Create Request
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"www.someurl.com");

        // Create Client
        WebClient client = new WebClient();

        // Assign Credentials
        client.Credentials = new NetworkCredential("username", "pass");

        // Grab Data
        sjson = client.DownloadString(@"www.someurl.com");
        System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        oSerializer.MaxJsonLength = Int32.MaxValue;
        sjson = oSerializer.Serialize(sjson);

但是当我从 html 代码中的 javascript 访问这个 sjson 变量时,它不会返回任何内容,但如果我对其进行硬编码,它会返回值,请对此提供帮助。我尝试了很多东西但没有成功。我还尝试只传递检索到的 json 字符串而不进行序列化,当我这样做时,javascript 停止工作。 :( 以下是 JavaScript 代码,

    <script type="text/javascript">
    var jsons = JSON.parse('<%=sjson%>');


    function initialize() {
        alert("hahahahaaa");
        document.writeln(jsons.Body[0].RowId.SensorIdValue);
        //document.writeln(myobject.Body[0].RowId.SensorIdValue);
    }
    </script>

问题是

    document.writeln(myobject.Body[0].RowId.SensorIdValue); 

如果我使用 myobject 变量,则返回一个值,但是

    document.writeln(jsons.Body[0].RowId.SensorIdValue);

当我将它与解析的值一起使用时,不会返回任何内容。 :(

以下是我通过 C# 运行序列化器后得到的 json 输出 (response.write) 示例,

请帮助我解决这个问题......我似乎无法在这里找到问题。

编辑:

如果有帮助,下面是我直接从服务器获取的 json 字符串,无需进行任何序列化,

由于版主要求,问题的部分内容已被删除

最佳答案

您看到的是双重 JSON 序列化数据。您从远程服务器检索 JSON,然后使用 JavaScriptSerializer 对它进行第二次 JSON 编码。这是我在 ASMX ScriptServices 上下文中写的一篇文章,其中更详细地解释了:http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/ 。您的情况并不完全相同,但最终结果是相同的。

删除 JavaScriptSerializer 代码并返回您检索到的 JSON 字符串 (sjson),而不是再次序列化它。

关于c# - 从JSON读取,数据不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12362633/

相关文章:

php - 还有其他方法可以在远程服务器上包含一个 php 文件吗?除了 <?php include(); ?>

c# - _layouts/Authenticate.aspx 在 Sharepoint 2010 中的重定向中丢失查询字符串参数

asp.net - 将 ASP.NET DropDownList DataTextField 绑定(bind)到方法?

c# - 在 WinForms 中控制嵌套限制

c# - 为什么 C# 编译器不捕获 InvalidCastException

javascript - 将数组中的对象属性推送到另一个对象数组中

c# - 这是如何使用 Entity Framework Core 和 ASP.NET Core MVC 2.2+ 和 3.0 创建数据传输对象 (DTO)

c# - 如何处理混合模式项目中的打印?

c# - 从机器人代码调用 MS Teams Graph API 会导致 403 请求被禁止

javascript - 如何制作更新内容区?