匹配来自两个独立JSON提要的值
Matching values from two separate JSON feeds
我正在研究一个带有多个JSON提要的AJAX驱动项目。我使用一个提要创建一个类别列表,该列表过滤来自第二个提要的文章。
我的第一个提要是这样的:
"value": [
{
"Id": "1ca44b5b-06ab-63fa-8375-ff00000b3273",
"Title": "Safety",
}, ...
]
我的第二个提要是这样的:
value": [
{
"Id": "30b94b5b-06ab-63fa-8375-ff00000b3273",
"Title": "Test article",
"Body": "Test content",
"topics": [
"1ca44b5b-06ab-63fa-8375-ff00000b3273"
],
}, ...
]
第一个提要是主题列表,第二个提要是由这些主题标记的一组文章。我能够很好地匹配过滤的guid,但问题是,由于第二个提要的限制,我无法将标题"Safety"拉到文章中。出于各种原因,我需要这个标题,主要是样式和将标题推送到页面URL。
我正在努力寻找最好的方法来解决这个问题,以便使它充满活力。基本上,我想根据第一个提要找到将GUID与第二个提要中的标题关联起来的最佳方法。
我是这样拉两个提要的:
喂1:
$('.category-filters').each(function(){
var $this = $(this);
$.ajax({
method:"GET",
url: '/api/stories/flat-taxa?$filter=TaxonomyId%20eq%20dca84b5b-06ab-63fa-8375-ff00000b3273',
data: { format:'json'},
context:$this
}).success(function(data){
var category = data.value;
var filter = [];
for (i = 0; i < category.length; i++) {
$this.append('<li><input type="checkbox" id="' + category[i].Id + '"><label for="' + category[i].Id + '">' + category[i].Title + '</label></li>');
}
});
});
饲料2:
function storyCards(){
$.ajax({
method:"GET",
url: url,
data: { format:'json' },
context:$('.story-cards')
}).success(function(data){
var story = data.value;
for (i = 0; i < story.length; i++) {
$('.story-cards').append('<li class="item card-item"><div class="card"><div class="content"><h2>' + story[i].Title + '</h2>' + story[i].Summary + '</div><div class="card-footer"><a class="button" href="' + story[i].UrlName + '">' + story[i].ButtonText + '</a></div></div></li>');
}
});
}
希望这是有意义的,如果需要,很高兴提供更多的细节。
似乎是共享字典的好地方,您可以将GUID与标题匹配。
//dynamically set the titles
var guid2title = {}
//titles is the array of titles/GUID in your post
for (var i = 0; i < titles.length; i++){
guid2title[titles[i]["Id"]] = titles[i]["Title"];
}
//items is the json array of articles in your post
for (var i = 0; i < items.length; i++){
items[i].titles = []; //used later to save to the object
for (var j = 0; j < items[i].topics.length; j++){
var GUID = items[i].topics[j];
var title = guid2title[GUID];
//attach it to your item for later use
items[i].titles.push(title);
}
}
执行一些循环并将主题标题添加到文章中,例如:
var obj1 = {
"value": [{
"Id": "1ca44b5b-06ab-63fa-8375-ff00000b3273",
"Title": "Safety",
}]
};
var obj2 = {
"value": [{
"Id": "30b94b5b-06ab-63fa-8375-ff00000b3273",
"Title": "Test article",
"Body": "Test content",
"topics": [
"1ca44b5b-06ab-63fa-8375-ff00000b3273"
],
}]
};
$.each(obj2.value, function(i, v) {
$.each(obj1.value, function(index, val) {
if (v.topics[0] == val.Id) {
obj2.value[i]['TopicName'] = val.Title;
}
});
});
console.log(obj2);
演示:https://jsfiddle.net/jrdn27rf/
在本例中,您可以执行以下操作:
函数……(){
$.ajax({
method:"GET",
url: url,
data: { format:'json' },
context:$('.story-cards')
}).success(function(data){
var story = data.value;
for (i = 0; i < story.length; i++) {
var categoryTitle = $('label[for="'+story[i].topics[0]+']"').text();
$('.story-cards').append('<li class="item card-item"><div class="card"><div class="content"><h2>' + story[i].Title + '</h2>' + story[i].Summary + '</div><p>'+categoryTitle +'</p><div class="card-footer"><a class="button" href="' + story[i].UrlName + '">' + story[i].ButtonText + '</a></div></div></li>');
}
});
}
相关文章:
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 使用JQuery解析JSON嵌套数组
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何使用json将对象列表从java转换为javascript
- 如何使用 node.js 比较两个 json 数组
- 如何将JSON数据导入我的ejs模板
- 区分JSON中的矩阵和列表列表
- 在JSON中创建一个数据对(不是字典,而是两个独立的数据)
- 将JSON数据拆分为两个独立的数组
- 将JSON数据从C#传递到独立的Javascript文件(无Web服务器)
- 将Django模板中的JSON传递给独立的Javascript文件
- 匹配来自两个独立JSON提要的值
- 如何使用Javascript中的字符串来验证两个独立JSON字典中的数据