-1

JSON でオブジェクトを送信したいのですが、このオブジェクトを for ループで繰り返します。送信された JSON は正しいですが、問題は配列に null 値があることです。myValue.children[index]= item; 私は.filter() メソッドを試したとリンクしていると思いますが、返された配列が空であるため、問題は解決しませんでした。条件も試しましたが、4 つの値が検出されました。これは私が受け取る JSON です:

{
  "name":"object",
  "children":[
    {
      "name":"myName",
      "children":[
        {
          "name":"aNumber",
          "size":12345
        }
      ]
    },
    null,
    null,
    null,
    {
      "name":"myName",
      "children":[
        {
          "name":"aNumber",
          "size":12345
        }
      ]
    },
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    {
      "name":"myName",
      "children":[
        {
          "name":"aNumber",
          "size":12345
        }
      ]
    },
    {
      "name":"myName",
      "children":[
        {
          "name":"aNumber",
          "size":12345
        }
      ]
    }
  ]
}

これは私のコードです:

function myFunction(index, tabItem , callback){
    var result = '';
    var myValue = {};
    var childrenTicket = [];
    myValue.name = "object";
    myValue.children = childrenTicket;
    for (index in tabItem) {
        try{
            var currentItem = tabItem[index];
            var Object =currentItem.issuelinks.issuelinktype.outwardlinks.issuelink;
            for(var SeveralObject in Object) {
                var item = {};
                var specificObject = Object[SeveralObject]; 
                var main = specificObject._;
                var id = specificObject.$.id;
                var descriptionObject = {};
                descriptionObject.name = id;
                descriptionObject.size = 12345;
                item.name = main;
                if (myValue.children[index] == undefined){
                    console.log('undefined detected'); 
                }
                myValue.children[index]= item;
                //result = result + (myValue);
                item.children = [descriptionObject];
                sendJson(myValue);
                callback(result);
            }
        } catch(ignored){
        }
    } return result;
}

あなたが私を助けてくれることを願っています。

4

4 に答える 4

0

次のようなことを試してください:

for (var i in obj) {
  if (obj[i] === null || obj[i] === undefined) {
    delete obj[i];
  }
}

objあなたのJSONオブジェクトです。

于 2016-04-21T06:36:44.120 に答える
0

underscoreモジュールを使用して、そのcompactメソッドを使用できます。

リンク: http://underscorejs.org/#compact

于 2016-04-21T06:37:27.597 に答える
0

このようにnull値を削除できます

    for (var ite in ObjJson)
            {
                if(ObjJson[ite]==null)
                {
                console.log('ys null');
                delete ObjJson[ite];
                } 
            }
于 2016-04-21T06:42:34.330 に答える