Javascript 创建一个新的JSON数组,其中包含来自另一个JSON的特定属性
我有一个JSON对象数组Javascript 创建一个新的JSON数组,其中包含来自另一个JSON的特定属性,javascript,json,Javascript,Json,我有一个JSON对象数组 "questions": [ { "id": "id", "answer":"answer", "question_type": "q_type", "question": { "header":"Text", "question_image": "link", "answers_list": ["array"], } }, { "id": "id", "ans
"questions": [
{
"id": "id",
"answer":"answer",
"question_type": "q_type",
"question": {
"header":"Text",
"question_image": "link",
"answers_list": ["array"],
}
},
{
"id": "id",
"answer":"answer",
"question_type": "q_type",
"question": {
"header": "Text",
"question_image": "link",
"choices_type": "text",
"choices": ["array"]
}
}
]
我想从这个json中提取另一个json,它只包含id和答案,如下所示
"answers": [{"question": question_id, "answer": "text"}]
假设问题id和答案都在questions对象中,则可以按如下方式执行:
var answers = [];
for(var i = 0; i < questions.length; i++)
{
answers.push({
question: questions[i].id,
answer: questions[i].answer
});
}
这还假设您将问题数组声明为var questions=…假设问题id和答案都在questions对象中,那么您可以按如下方式执行:
var answers = [];
for(var i = 0; i < questions.length; i++)
{
answers.push({
question: questions[i].id,
answer: questions[i].answer
});
}
这还假设您将问题数组声明为var questions=…您可以使用JavaScript映射函数,假设变量q包含您的问题对象:
var out = q.questions.map(function(element) {
return {"question": element.id, "answer": element.answer};
});
假设变量q包含您的问题对象,则可以使用JavaScript映射函数:
var out = q.questions.map(function(element) {
return {"question": element.id, "answer": element.answer};
});
这是你的json
var json = {"questions": [
{
"id": "id",
"answe":"answer",
"question_type": "q_type",
"question": {
"header":"Text",
"question_image": "link",
"answers_list": ["array"]
}
},
{
"id": "id",
"answer":"answer",
"question_type": "q_type",
"question": {
"header": "Text",
"question_image": "link",
"choices_type": "text",
"choices": ["array"]
}
}
]}
现在迭代它并创建一个新的Json对象
var answers = []
var question = {}
json.questions.forEach(function(value, index){
question.id = value.id;
question.answer = value.answer;
answers.push(question);
});
var resultJson = {};
resultJson.answers = answers;
这是你的json
var json = {"questions": [
{
"id": "id",
"answe":"answer",
"question_type": "q_type",
"question": {
"header":"Text",
"question_image": "link",
"answers_list": ["array"]
}
},
{
"id": "id",
"answer":"answer",
"question_type": "q_type",
"question": {
"header": "Text",
"question_image": "link",
"choices_type": "text",
"choices": ["array"]
}
}
]}
现在迭代它并创建一个新的Json对象
var answers = []
var question = {}
json.questions.forEach(function(value, index){
question.id = value.id;
question.answer = value.answer;
answers.push(question);
});
var resultJson = {};
resultJson.answers = answers;
您需要“映射”问题的数据,因为如果要将其解析为JSON,您需要小心循环引用。
但是您只需要指定question.id。所以这没问题
您需要“映射”问题的数据,因为如果要将其解析为JSON,您需要小心循环引用。
但是您只需要指定question.id。所以这没问题。这会将原始JSON映射到指定的JSON。使用函数 var json={问题:[{id:id,答案:答案,问题类型:q\u类型,问题:{标题:文本,问题图像:链接,答案列表:[array]},{id:id,答案:答案,问题类型:q\u类型,问题:{标题:文本,问题图像:链接,选项类型:文本,选项:[array]}}}; var keep=[,'questions','id','answer']; var newJson=JSON.stringifyJSON.parsejson,functionk,v{ 变量idx=k&&k==k; 如果idx | | keep.indexOfk>-1{ 如果idx&&typeof v==='object'{ var id=v.id; 删除v.id; v、 问题=身份证; } 返回v; } }; document.body.textContent=newJson;
console.lognewJson 这将把您的原始JSON映射到指定的JSON。使用函数 var json={问题:[{id:id,答案:答案,问题类型:q\u类型,问题:{标题:文本,问题图像:链接,答案列表:[array]},{id:id,答案:答案,问题类型:q\u类型,问题:{标题:文本,问题图像:链接,选项类型:文本,选项:[array]}}}; var keep=[,'questions','id','answer']; var newJson=JSON.stringifyJSON.parsejson,functionk,v{ 变量idx=k&&k==k; 如果idx | | keep.indexOfk>-1{ 如果idx&&typeof v==='object'{ var id=v.id; 删除v.id; v、 问题=身份证; } 返回v; } }; document.body.textContent=newJson;
console.lognewJson;只是一条评论,但你的答案拼错了。答案:文本是常量吗?不,不是。这只是我想要的一个例子。你试过什么了吗?只是一个评论,但你的答案拼错了。答案:文本是常量吗?不,不是。这只是我想要的一个例子。你试过什么了吗?