簡體   English   中英

用$ .extend()合並兩個json文件

[英]Merge two json files with $.extend()

我有一個函數,其中我用$http.get()加載了兩個本地json文件。 加載此文件后,我想將其合並到一個json文件中。 我用$.extend()嘗試過,我在JQuery文檔中找到了它。

$http.get()調用中打印出我的變量,我可以在控制台中看到我的變量和回調正確。 當我打印合並的變量時,它仍然是空的。 怎么了?

第一個JSON文件:

{
    "Default_Default_Add": "Hinzufügen",
    "Default_Default_AllInRibbon": "Alle im Band",
    "Default_Default_ApplicationMode_Development": "Entwicklung",
    "Default_Default_ApplicationMode_Education": "Schulung",
    "Default_Default_ApplicationMode_Production": "Produktion",
    "Default_Default_ApplicationMode_Testing": "Test",
    "Default_Default_Back": "Zurück"
}

第二個JSON文件:

{
    "Default_Return_Success": "Erfolg",
    "Success_Success_ChangePassword": "Passwort erfolgreich geändert",
    "Success_Success_DefaultRole": "Standardrolle wurde gesetzt",
    "Success_Success_Delete": "Erfolgreich gelöscht",
    "Success_Success_DeleteApplicationSetting": "ApplicationSetting erfolgreich gelöscht",
    "Success_Success_DeleteAscertainmentInstrument": "Erhebung erfolgreich storniert. "
}

功能:

loadData() {
    let json1: any;
    let json2: any;
    this.$http.get('../../app/shared/labels/default.de.json').success(function (data) {
        json1 = data;
        console.log(json1); //PRINT LINE 58
        console.log(data); //PRINT LINE 59
    });
    this.$http.get('../../app/shared/labels/success.de.json').success(function (data) {
        json2 = data;
        console.log(json2); //PRINT LINE 63
        console.log(data); //PRINT LINE 64
    });

    let json = $.extend({}, json1, json2);
    console.log(json); //PRINT LINE 68

    return json;
}

控制台打印: 在此處輸入圖片說明

我認為某些事情以錯誤的順序進行或要在所有內容加載之前快速執行,我不知道。 希望能有所幫助。

!!! 編輯!!!:

    let json1 = this.$http.get('../../app/shared/labels/default.de.json');
    let json2 = this.$http.get('../../app/shared/labels/success.de.json');
    let json: any;

    this.$q.all([json1, json2]).then(() => {
        let json = $.extend({}, json1, json2);
        console.log(json);
    });

結果: 在此處輸入圖片說明

承諾稍后會解決。 您正在嘗試合並尚未收到的json。 嘗試如下:

var mergedResult=null;
$.when( 
    this.$http.get('../../app/shared/labels/default.de.json'), 
    this.$http.get('../../app/shared/labels/success.de.json') )
  .done(function( json1, json2 ) {
       mergedResult = $.extend({}, json1, json2);        
});

使用延遲

$.when( 
  this.$http.get('../../app/shared/labels/default.de.json'), 
  this.$http.get('../../app/shared/labels/success.de.json') 
).done( function( a1, a2 ) {
  json = $.extend({}, a1, a2);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM