如何从JSON文件中只获取第一个属性?

时间:2017-11-15 22:03:23

标签: javascript jquery json ajax

我试图只从这个JSON文件中获取所选项目:

<div>

例如,我需要先在第一个<div>中显示问题和答案,在第二个<div>和第三个q&amp; a在第三个$.ajax({ url: 'faqs.json', dataType: 'json', type: 'GET', cache: true, success: function(data) { $(data.faqs).each(function(index, value) { $('#firstQuestion').text("Q: " + value.question); $('#firstAnswer').text(value.answer); $('#secondQuestion').text("Q: " + value.question); $('#secondAnswer').text(value.answer); $('#thirdQuestion').text("Q: " + value.question); $('#thirdAnswer').text(value.answer); }); } });

我正在使用AJAX访问该文件:

<div>

现在我得到了一些循环遍历所有项目的结果并给了我最后一项但是正如我之前已经说过的那样,我需要第一个问题并在第一个string webUrl = "https://mysharepointesite.sharepoint.com/"; string targetSite = webUrl; using (ClientContext ctx = ClaimClientContext.GetAuthenticatedContext(targetSite)) { if (ctx != null) { var lib = ctx.Web.Lists.GetByTitle("mesdocuments"); ctx.Load(lib); ctx.Load(lib.RootFolder); ctx.ExecuteQuery(); string sourceUrl = "C:\\temp\\picture.jpg"; using (FileStream fs = new FileStream(sourceUrl, FileMode.Open, FileAccess.Read)) { Microsoft.SharePoint.Client.File.SaveBinaryDirect (ctx, lib.RootFolder.ServerRelativeUrl + "/myPicture.jpg", fs, true); } } 回答,依此类推。

您能为我提供一些想法或解决方案吗?我现在试图解决这个问题大约4个小时,我什么都没有。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

这就是你需要的......

&#13;
&#13;
var array = {
  "faqs": [
    {
      "id": 1,
      "question": "What is Salmon about?",
      "answer": "Building great sites for our amazing clients. Simple."
    },
    {
      "id": 3,
      "question": "What is the location of Salmon Watford?",
      "answer": "Just 2 minutes walk from Watford Junction Train Station"
    },
    {
      "id": 5,
      "question": "Is this the last question?",
      "answer": "Yes. You have done well!"
    }
  ]
}

var faqs = array.faqs;

for(var i = 0; i< faqs.length; i++){
  var div = document.createElement("div");
  div.innerHTML = "Q : "+ faqs[i].question + " Ans: "+faqs[i].answer;
  document.getElementById("main").appendChild(div);
}
&#13;
<div id="main"></div>
&#13;
&#13;
&#13;

对于您的用例,只需将javascript代码放入成功回调和var faqs = data.faqs即可。

答案 1 :(得分:2)

你不需要循环 - 如果你不确定数组的长度这将不起作用,你需要一个不同的解决方案,如@ usman-rana发布,但如果你不&#39 ;这应该有效:

$.ajax({
    url: 'faqs.json',
    dataType: 'json',
    type: 'GET',
    cache: true,
    success: function(data) {
      $('#firstQuestion').text("Q: " + data.faqs[0].question);
      $('#firstAnswer').text(data.faqs[0]..answer);
      $('#secondQuestion').text("Q: " + data.faqs[1]..question);
      $('#secondAnswer').text(data.faqs[1].answer);
      $('#thirdQuestion').text("Q: " + data.faqs[2].question);
      $('#thirdAnswer').text(data.faqs[2].answer);
    }
  });

答案 2 :(得分:0)

我们假设我们有一个名为zip的函数,该函数接收两个数组并返回一个双精度数组:

const zip = (array1, array2) => [[array1[0], array2[0]], ...]

ramdalodash,我相信underscorejquery具有此功能。如果没有,这是一个基本的zip函数:

const zip = (a, b) => {
  const result = []
  const maxLength = Math.max(a.length, b.length)
  for(let i = 0; i < maxLength; i++) {
    result.push(
      [a[i], b[i]]
    )
  }

  return result
}

现在我们接收您的有序div列表和faqs列表,创建一个[[div, faqObj]]

列表

然后我们迭代并完成我们的工作:

const fullList = zip(divs, faqs)

fullList.forEach((div, obj) => {
  // do your imperative work here,
  // given a div and an object
})