当我尝试从 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/