JSON 数组的简单迭代
使用实际的 JSON 响应进行了更新,上次搞砸了。
这是我使用 JSON 的第二天,我陷入了项目的第一步。
我创建了一个 wcf 休息服务,它提供了此测试 json 响应。
[{
"busyEndTime":"\/Date(928164000000-0400)\/",
"busyStartTime":"\/Date(928164000000-0400)\/",
"endGradient":1.26743233E+15,
"startGradient":1.26743233E+15,
"status":"String content"
我正在尝试读取此输出
的内容并将该内容用于各种其他目的。 在内容中,我指的是“busyEndTime,busyStartTime”值等。
我在网上尝试了很多例子,但我的运气仍然不好,
以下是我尝试阅读上述内容但失败的方法。
$('#btnGetTime').click(function () {
$.ajax({
cache: false,
type: "GET",
async: false,
url: serviceAddress,
dataType: "application/json; charset=utf-8",
data: "{}",
success: function (student) {
***********< em>******** 尝试 1
var obj = jQuery.parseJSON(student);
for (var i = 0; i < obj.length; i++) {
alert(obj[i]);
}
********** 尝试 2
var obj = eval("(" + student + ")");
for (var i = 0; i < obj.length; i++) {
alert(obj[i]);
}
************* *尝试 3
success: test(student)
.......
.....
function test(jObject) {
var jArrayObject = jObject
if (jObject.constructor != Array) {
jArrayObject = new Array();
jArrayObject[0] = jObject;
}
********* *****尝试 4
success: test(student)
.......
.....
function test(jObject) {
var jArrayObject = jObject
for (var i = 1, n = jObject.length; i < n; ++i) {
var element = jObject[i];
................
....................
}
******** ******* Try5
$.each(jArrayObject, function (key, value) {
alert(key + ": " + value);
});
如果有人可以逐步指导如何像我上面那样读取 JSON 响应,我将非常感激并迭代响应包含的数组,最后使用数组中的内容,至少提醒键值对。
我想要的只是快速响应,随着时间的流逝,我对 jquery 失去了兴趣。 :(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
更新:既然您已经发布了实际的 JSON 文本,下面是使用它的示例:
Live copy
输出:
请注意,除非您将“reviver”与可理解该特定日期格式的 JSON 解析器一起使用,否则不会自动处理日期。 JSON 没有自己的日期格式,但它具有“reviver”的概念,可以在反序列化过程中使用它来预处理值。
jQuery 自己的 JSON 解析器没有“reviver”功能,但您可以下载具有“reviver”功能的解析器(Douglas Crockford 的 github 页面 —Crockford 是 JSON 的发明者)。然后你会告诉 jQuery 不解析 JSON,而是自己显式地解析。看起来像这样:
Live copy
...当然你会使用其他一些 JSON 解析器比
$.parseJSON
。原始答案:
问题
那不是 JSON。您可以在此处阅读 JSON 内容,并且可以验证您的 JSON 字符串此处。我不太确定它是什么。它看起来很像 XML,但就像有人从树查看器或其他东西中获取了 XML(元素开头旁边的那些
-
符号)。下面,我将展示该数据在 JSON 中的样子、如何使用它,然后如果您想使用 XML,则使用使用 XML 数据的相同示例。
JSON 格式的数据
以下是 JSON 中的数据形式:
请注意,类型(元素名称)已消失,因为 JSON 没有元素名称的概念。 (如果您需要它们,您可以创建一个保存相关信息的键。)因此,数组中的两个条目中的每一个都是一个
busyDateTime
,因为纯粹是在ArrayOfBusyDateTime
中。代码>.但 JSON 的特点之一是它具有很强的可塑性,因此您可能更喜欢稍微不同的做法。使用该 JSON 数据
以下是使用该数据的示例:
Live copy
输出:
XML
为了完整起见,如果您的数据确实如此是 XML,如下所示:
使用 XML 数据:
...那么您可以使用以下方法:
Live copy
...虽然我不与XML 较多,可能会提高一些效率(看起来很多东西都封装在 jQuery 实例中)。
输出:
Update: Now that you've posted the actual JSON text, here's an example of using it:
Live copy
Output:
Note that the dates aren't automagically handled unless you use a "reviver" with the JSON parser that understands that particular date format. JSON has no date format of its own, but it has this concept of a "reviver" that can be used during the deserialization process to pre-process values.
jQuery's own JSON parser doesn't have the "reviver" feature, but you can download ones that do (there are three on Douglas Crockford's github page — Crockford being the inventor of JSON). Then you'd tell jQuery not to parse the JSON, and instead do it explicitly yourself. That would look like this:
Live copy
...except of course you'd use some other JSON parser rather than
$.parseJSON
.Original answer:
The problem
That's not JSON. You can read up on JSON here, and you can validate your JSON strings here. I'm not quite sure what it is. It looks a lot like XML, but like someone took the XML from a tree viewer or something (those
-
symbols next to the beginnings of elements).Below, I'll show what that data might look like in JSON, how you would work with it, and then if you want to work with XML instead, the same example using XML data.
Your data in JSON format
Here's an idea of what that might look like in JSON:
Note that the types (element names) have gone, because JSON has no concept of element names. (If you want them, you can create a key that holds the relevant information.) So each of the two entries in the array is a
busyDateTime
by virtue purely of being in theArrayOfBusyDateTime
. But one of the things about JSON is that it's very malleable, so you may prefer to do it slightly differently.Working with that JSON data
Here's an example of using that data:
Live copy
Output:
XML
For completeness, if your data really is XML, like this:
Working with XML data:
...then here's how you might work with that:
Live copy
...although I don't work with XML much, could be some efficiencies to be had (seems like a lot of wrapping things up in jQuery instances).
Output:
对我来说它看起来不像 JSON!它看起来像 XML。
JSON 非常简单,记录如下: http://www.json.org/
您可能拥有的内容发现可能是对 WCF 失去兴趣的一个原因,但不是对 JSON/javascript/jQuery 失去兴趣。
It doesn't look like JSON to me! It looks like XML.
JSON is incredibly simple, and is documented here: http://www.json.org/
What you might have discovered might be a reason to lose interest in WCF, but not in JSON/javascript/jQuery.