【问题标题】:Compare two json objects比较两个 json 对象
【发布时间】:2016-06-15 13:11:20
【问题描述】:

假设有 2 个这样的 json 对象:

 var obj1=    {
"errors":{
  "addcreditcard":"Non è stato possibile associare questa carta, ti preghiamo di ricontrollare i dati e riprovare.",
  "creditrecharge":"Si è verificato un errore durante la ricarica.",
  "ticketvalidation":"Siamo spiacenti, si è verificato un problema durante la validazione.",
  "ticketpurchase": "Siamo spiacenti, si è verificato un problema durante l\"acquisto.",
  "qrwrong": "Hai scansionato un QR Code non valido. Scansiona un QR Code OpenMove."
 }
}

还有这个:

var obj2 =  {
'errors':{
   'addcreditcard':'Wir konnten diese Karte nicht verifizieren. Bitte         \u00fcberpr\u00fcfe deine Angaben und versuche es noch einmal.',
   'creditrecharge':'Beim Aufladen deines Guthabens ist ein Fehler aufgetreten.',
   'qrwrong': 'Sie haben einen ung\u00fcltigen QR Code gescannt. Bitte einen OpenMove QR Code scannen.'
}
}

如何获取另一个对象(使用 javascript 或 jquery),其值在第一个 json 中,但不是在第二个中? 在这种情况下,它将是:

 var example = {
  "errors":{
      "ticketvalidation":"Siamo spiacenti, si è verificato un problema durante  la validazione.",
     "ticketpurchase": "Siamo spiacenti, si è verificato un problema durante l\"acquisto."
}
}

【问题讨论】:

    标签: javascript jquery json xml


    【解决方案1】:

    您可以使用此代码迭代第二个对象中的所有属性并检查它们是否存在于第一个对象中:

       var obj1=    {
    "errors":{
      "addcreditcard":"Non è stato possibile associare questa carta, ti preghiamo di ricontrollare i dati e riprovare.",
      "creditrecharge":"Si è verificato un errore durante la ricarica.",
      "ticketvalidation":"Siamo spiacenti, si è verificato un problema durante la validazione.",
      "ticketpurchase": "Siamo spiacenti, si è verificato un problema durante l\"acquisto.",
      "qrwrong": "Hai scansionato un QR Code non valido. Scansiona un QR Code OpenMove."
     }
    };
    
     var obj2 =  {
    'errors':{
       'addcreditcard':'Wir konnten diese Karte nicht verifizieren. Bitte         \u00fcberpr\u00fcfe deine Angaben und versuche es noch einmal.',
       'creditrecharge':'Beim Aufladen deines Guthabens ist ein Fehler aufgetreten.',
       'qrwrong': 'Sie haben einen ung\u00fcltigen QR Code gescannt. Bitte einen OpenMove QR Code scannen.'
    }
    };
    
    var finalObject = {};
    for (var property in obj1.errors) {
    
        if (obj1.errors.hasOwnProperty(property)) {
    
           if(!obj2.errors.hasOwnProperty(property)){
    
               // exist only in first
               finalObject[property] = obj1.errors[property];
           }
        }
    }
    
    console.log(finalObject)
    

    【讨论】:

    • 谢谢,现在我无法将文本转换为对 json 对象的 Ajax 调用。无论如何,我认为这是公平的:)
    • 我修好了你有here一个工作小提琴。
    • 非常感谢,但是没有办法动态地做到这一点吗?不放“.ticket”
    • 如果你想要两个级别,代码会很复杂。在这里我想你的主要对象是“错误”
    • 好的,谢谢。如果它动态进行会更好,因为我必须比较许多不同的json,但我会找到一种方法:)
    猜你喜欢
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2018-03-28
    相关资源
    最近更新 更多