如何从 JSON 获取特定数据?
JSON:
[
{ "TotalPageCount": 66 },
{ "TotalTitleCount": 199 },
{ "Title": "cola" },
{ "Title": "elvis tom" },
{ "Title": "dvd" }
]
Javascript代码:
<script>
function updateTitlesArea() {
$.getJSON(
"/lates/json/",
null,
function(data) {
$("#titlesDiv").html("");
$("#pagesDiv").html("");
var x;
if (data.length > 0) {
for (x in data) {
$("#titlesDiv").html($("#titlesDiv").html() +
"<li><a href=\"/" + data[x].Title.replace(/ /g, '-') + "\">" + data[x].Title + "</a>" +
"</li>"
);
}
} else {
$("#titlesDiv").html("<li>no entry</li>");
}
});
}
</script>
我正在尝试{"TotalPageCount":66}
和{"TotalTitleCount":199}
来自Javascript。请给我一个方法来获取它们?
非常感谢。
出了点问题,我尝试了所有解决方案,但效果不佳。 我控制了json格式:
当前的Json Builder:
if (title.Any()) { foreach (var x in title) { result.AddLast(new { Title = x.Title }); } } result.AddLast(new { TotalPageCount = totalPageCount }); result.AddLast(new { TotalTitleCount = totalTitleCount }); return Json(result.ToList(), JsonRequestBehavior.AllowGet);
我对json格式进行了一些小改动,将总页数和标题数量计入json的结尾。
当前
[{ “标题”: “草”},{ “标题”:“耶尔马兹 ozdil“},{”Title“:”dvd“},{”Title“:”真的很疯狂 deep“},{”Title“:”deportivo de la coruna“},{”Title“:”sizi seven kisiyle sevdiginiz kisinin farkli olmasi“},{”Title“:”kadinlarin bavul gibi canta tasimalari“},{”Title“:”hosbuldum“},{”Title“:”sark cibani“},{”Title“:”mevsimler gecerken“},{”Title“:”bir kerede kolon “我不知道” bilimi“},{”Title“:”memetq“},{”Title“:”ogrencilerin sinav kagidina dustugu ilginc notlar“},{”Title“:”cami duvarina isemek“},{”Title“:”kufurden sonra tovbe etmek“},{”Title“:”gida tarim ve hayvancilik bakanligi“},{”Title“:”cevre orman ve sehircilik bakanligi“},{”Title“:”google da nikah masasi calmak “},{” TotalPageCount “:9},{” TotalTitleCount“:199}]
使用我的代码和给出的示例,我仍然无法获得TotalPageCount和TotalTitleCount。
记录:也许下次我可以在标题旁边添加更多属性。 所以我想保留json格式。
感谢您提前
答案 0 :(得分:1)
当您执行x in data
时,您将获得每个对象的关键字。所以你必须做一个简单的检查,看它是TotalPageCount
还是TotalTitleCount
。像这样;
<script>
function updateTitlesArea() {
$.getJSON(
"/lates/json/",
null,
function(data) {
var x, totalPageCount, totalTitleCount;
$("#titlesDiv").html("");
$("#pagesDiv").html("");
if (data.length > 0) {
for (x in data) {
if('TotalPageCount' == x) {
totalPageCount = data[x];
continue;
}
if('TotalTitleCount' == x) {
totalTitleCount = data[x];
continue;
}
$("#titlesDiv").html($("#titlesDiv").html() +
"<li><a href=\"/" + data[x].Title.replace(/ /g, '-') + "\">" + data[x].Title + "</a>" +
"</li>"
);
}
// You can do here whatever you want with 'totalPageCount' and 'totalTitleCount'
} else {
$("#titlesDiv").html("<li>no entry</li>");
}
});
}
</script>
答案 1 :(得分:0)
这是一个数组,所以
if (data.length > 0) {
var obj = data[0]; // array, not object
for (key in obj) {
$("#titlesDiv").html(
$("#titlesDiv").html() +
"<li><a href=\"/" + obj[key].Title.replace(/ /g, '-') + "\">" +
obj[key].Title + "</a>" +
"</li>"
);
}
答案 2 :(得分:0)
你正在使用jQuery吗?你可以尝试这样的事情:
var prom = $.getJSON('/lates/json/'),
ar;
prom.then(function (data) { ar = data; });
之后,您将在 ar 中拥有响应数组。您将能够以这种方式访问所需的值:
ar[0].TotalPageCount
ar[1].TotalTitleCount
我希望这会对你有所帮助。祝你好运。
答案 3 :(得分:0)
使用您当前的JSON格式,它就是这样的。不过,如果你能改变JSON格式会更好。
<script>
function updateTitlesArea() {
$.getJSON(
"/lates/json/",
null,
function(data) {
$("#titlesDiv").html('<ul></ul>'); // <li> goes inside <ul> or <ol>
$("#pagesDiv").empty();
var has_titles = false;
for(var i = 0; i < data.length; i++) {
if("Title" in data[i]) {
$("#titlesDiv ul").append(
'<li><a href="/' + data[i].Title.replace(/ /g, '-') + '">' + data[i].Title + "</a>" +
"</li>"
);
has_titles = true;
}
}
if( !has_titles ) {
$("#titlesDiv ul").html("<li>no entry</li>");
}
}
);
}
</script>