首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript JSON比较/比较?

Javascript JSON比较/比较?
EN

Stack Overflow用户
提问于 2012-04-28 05:05:20
回答 4查看 36.4K关注 0票数 21

假设我有以下两个json对象:

代码语言:javascript
复制
JSON A:
{
"Field A":"1",
"Field B":"2",
"Field D":"Something",
"Field E":"6"
}

JSON B:
{
"Field A":"1",
"Field B":"2",
"Field C":"3",
"Field D":"Different"
}

示例函数: function (jsonstringA,jsonstringB)

示例(如果使用JSON A和JSON B作为参数):

返回包含以下内容的新JSON对象:

代码语言:javascript
复制
{
"Field C":"3", // because function sees jsonstringB had no "Field C"
"Field D": "Different" // sees jsonstringB had a different value for "Field D"
}

注意,它使用jsonstringA作为比较的基础,因此该函数只返回缺少的字段和jsonStringB的值。这就是“字段E”和它的值不被返回的原因。

如果可能,想出一个函数返回一个包含已更改的值的json对象,最好的方法是什么?

我已经尝试了:我已经尝试通过手动指定我试图检查的字段进行比较,但我希望有一些东西,要求我不硬编码“字段”,因为这是非常低效的,每次我添加一个新的字段到JSON B,我必须在我正在寻找的字段中硬编码...这就是为什么我在寻找一种不那么痛苦的东西。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-28 05:10:23

创建这样的函数并不太难。只需遍历第二个对象中的每个字段,如果第一个对象中没有该字段,或者值与第一个不同,则将该字段放入返回对象中。

代码语言:javascript
复制
var compareJSON = function(obj1, obj2) {
  var ret = {};
  for(var i in obj2) {
    if(!obj1.hasOwnProperty(i) || obj2[i] !== obj1[i]) {
      ret[i] = obj2[i];
    }
  }
  return ret;
};

你可以在this demo page上看到它的实际效果。

票数 19
EN

Stack Overflow用户

发布于 2012-04-28 05:12:02

您可以查看json diff包装器here

它还演示了page.You可以使用这个包装器。

票数 3
EN

Stack Overflow用户

发布于 2012-11-15 08:46:08

这个函数对于非JSON对象比较也很有用

http://jsfiddle.net/muJEu/11/

还将其扩展为深度嵌套的对象。

代码语言:javascript
复制
isEmpty 

可以通过多种方式来完成。请参阅Is object empty?

代码语言:javascript
复制
var compareObj = function(obj1, obj2) { 
  var ret = {},rett; 
  for(var i in obj2) { 
      rett = {};  
      if (typeof obj2[i] === 'object'){
          rett = compareObj (obj1[i], obj2[i]) ;
          if (!isEmpty(rett) ){
           ret[i]= rett
          }              
       }else{
           if(!obj1 || !obj1.hasOwnProperty(i) || obj2[i] !== obj1[i]) { 
              ret[i] = obj2[i]; 
      } 
   }
  } 
  return ret; 
}; 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10357830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档