Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中将所有JSON键转换为小写?_Javascript_Jquery_Angularjs_Json - Fatal编程技术网

如何在javascript中将所有JSON键转换为小写?

如何在javascript中将所有JSON键转换为小写?,javascript,jquery,angularjs,json,Javascript,Jquery,Angularjs,Json,实际上,我的要求是将整个JSONonly键转换为小写。我试着只转换JSON的第一个键,而不是转换整个键。请查看fiddle链接或提供其他方法 谢谢 var obj = { "Collections": { "conTainer": { "rowSet": [{ "containerIsArchived": "Null", "containerOrderNo": "26", "versionNum": "0",

实际上,我的要求是将整个JSONonly键转换为小写。我试着只转换JSON的第一个键,而不是转换整个键。请查看fiddle链接或提供其他方法

谢谢

var obj = {
  "Collections": {
    "conTainer": {
      "rowSet": [{
        "containerIsArchived": "Null",
        "containerOrderNo": "26",
        "versionNum": "0",
        "containerGlobalUniqueId": "Null",
        "containerIsTenantBased": "true",
        "containerCreatedBy": "user",
        "containerIsDeleted": "false",
        "containerTenantId": "292FEC76-5F1C-486F-85A5-09D88096F098",
        "containerLayoutId": "4e13dfcd-cd3b-4a29-81bd-0f73cf9577cf",
        "containerApplicationId": "0000000-0000-0000-0000-000000000000",
        "containerIsActive": "Null",
        "containerHeaderText": "apitest19feb16",
        "containerId": "3745b273-c48d-4c94-b576-3d7aac2f7ac6",
        "containerCreatedUTCDate": "2016-02-19 17:57:51.0"
      }]
    }
  }
};

convertKeysToCamelCase(obj);

function convertKeysToCamelCase(obj) {
  if (!obj || typeof obj !== "object") return null;

  if (obj instanceof Array) {
    return $.map(obj, function(value) {
      return convertKeysToCamelCase(value);
    });
  }

  var newObj = {};
  $.each(obj, function(key, value) {
    key = key.charAt(0).toLowerCase() + key.slice(1);
    newObj[key] = value;
  });
  console.log(newObj);
  return newObj;
};
这里是Fiddle链接:

请尝试下面的代码

function ConvertKeysToLowerCase(obj) {
    var output = {};
    for (i in obj) {
        if (Object.prototype.toString.apply(obj[i]) === '[object Object]') {
           output[i.toLowerCase()] = ConvertKeysToLowerCase(obj[i]);
        }else if(Object.prototype.toString.apply(obj[i]) === '[object Array]'){
            output[i.toLowerCase()]=[];
             output[i.toLowerCase()].push(ConvertKeysToLowerCase(obj[i][0]));
        } else {
            output[i.toLowerCase()] = obj[i];
        }
    }
    return output;
};
请尝试下面的代码

function ConvertKeysToLowerCase(obj) {
    var output = {};
    for (i in obj) {
        if (Object.prototype.toString.apply(obj[i]) === '[object Object]') {
           output[i.toLowerCase()] = ConvertKeysToLowerCase(obj[i]);
        }else if(Object.prototype.toString.apply(obj[i]) === '[object Array]'){
            output[i.toLowerCase()]=[];
             output[i.toLowerCase()].push(ConvertKeysToLowerCase(obj[i][0]));
        } else {
            output[i.toLowerCase()] = obj[i];
        }
    }
    return output;
};

您需要递归到对象中,以便覆盖较低级别的键。要做到这一点,最好先创建对象的副本,然后进行修改,如下所示

// create copy of object
var newObj = JSON.parse(JSON.stringify(obj));
convertKeysToCamelCase(newObj);

function convertKeysToCamelCase(obj) {
    if (!obj || typeof obj !== "object") return null;

    if (obj instanceof Array) {
        return $.map(obj, function(value) {
            return convertKeysToCamelCase(value);
        });
    }

    // manipulates the object being passed in
    $.each(obj, function(key, value) {
        // delete existing key
        delete obj[key];
        key = key.charAt(0).toLowerCase() + key.slice(1);
        obj[key] = value;
        convertKeysToCamelCase(value);
    });

    return obj;
};

Fiddle-

您需要递归到对象中,以便覆盖较低级别的键。要做到这一点,最好先创建对象的副本,然后进行修改,如下所示

// create copy of object
var newObj = JSON.parse(JSON.stringify(obj));
convertKeysToCamelCase(newObj);

function convertKeysToCamelCase(obj) {
    if (!obj || typeof obj !== "object") return null;

    if (obj instanceof Array) {
        return $.map(obj, function(value) {
            return convertKeysToCamelCase(value);
        });
    }

    // manipulates the object being passed in
    $.each(obj, function(key, value) {
        // delete existing key
        delete obj[key];
        key = key.charAt(0).toLowerCase() + key.slice(1);
        obj[key] = value;
        convertKeysToCamelCase(value);
    });

    return obj;
};

小提琴-

稍微修改一下下面的答案,使其更易于阅读

function convertKeysToCamelCase(obj) {
    var output = {}
    for (var i in obj) {
        var current = obj[i]
        if (isObject(current) || isArray(current)) {
            output[i.toLowerCase()] = convertKeysToCamelCase(current);
        } else {
            output[i.toLowerCase()] = current;
        }
    }
    return output;
};

function isObject(obj) {
    return typeof obj === 'object'
}

function isArray(arr) {
    return Array.isArray(arr)
}

console.log(JSON.stringify(convertKeysToCamelCase(input)));

对下面的答案稍加修改,使其更易于阅读

function convertKeysToCamelCase(obj) {
    var output = {}
    for (var i in obj) {
        var current = obj[i]
        if (isObject(current) || isArray(current)) {
            output[i.toLowerCase()] = convertKeysToCamelCase(current);
        } else {
            output[i.toLowerCase()] = current;
        }
    }
    return output;
};

function isObject(obj) {
    return typeof obj === 'object'
}

function isArray(arr) {
    return Array.isArray(arr)
}

console.log(JSON.stringify(convertKeysToCamelCase(input)));

你可以从@Christophe's获得一份推荐信

如果您不明白,以下是代码:

js:


你可以从@Christophe's获得一份推荐信

如果您不明白,以下是代码:

js:


这里有一个想法,我希望它有用

var obj = {
    "containerIsArchived": "Null",
    "containerOrderNo": "26",
    "versionNum": "0",
    "containerGlobalUniqueId": "Null",
    "containerIsTenantBased": "true",
    "containerCreatedBy": "user",
    "containerIsDeleted": "false",
    "containerTenantId": "292FEC76-5F1C-486F-85A5-09D88096F098",
    "containerLayoutId": "4e13dfcd-cd3b-4a29-81bd-0f73cf9577cf",
    "containerApplicationId": "0000000-0000-0000-0000-000000000000",
    "containerIsActive": "Null",
    "containerHeaderText": "apitest19feb16",
    "containerId": "3745b273-c48d-4c94-b576-3d7aac2f7ac6",
    "containerCreatedUTCDate": "2016-02-19 17:57:51.0"
  };  

for(var i in obj){
    obj[i.toLowerCase()] = obj[i]; 
    delete obj[i];
}

console.log(obj);

最后一条语句以小写形式打印包含所有键的对象。我们的想法是创建一个新密钥(任何给定密钥的小写版本),然后去掉旧密钥。

这里有一个想法,我希望它有用

var obj = {
    "containerIsArchived": "Null",
    "containerOrderNo": "26",
    "versionNum": "0",
    "containerGlobalUniqueId": "Null",
    "containerIsTenantBased": "true",
    "containerCreatedBy": "user",
    "containerIsDeleted": "false",
    "containerTenantId": "292FEC76-5F1C-486F-85A5-09D88096F098",
    "containerLayoutId": "4e13dfcd-cd3b-4a29-81bd-0f73cf9577cf",
    "containerApplicationId": "0000000-0000-0000-0000-000000000000",
    "containerIsActive": "Null",
    "containerHeaderText": "apitest19feb16",
    "containerId": "3745b273-c48d-4c94-b576-3d7aac2f7ac6",
    "containerCreatedUTCDate": "2016-02-19 17:57:51.0"
  };  

for(var i in obj){
    obj[i.toLowerCase()] = obj[i]; 
    delete obj[i];
}

console.log(obj);

最后一条语句以小写形式打印包含所有键的对象。我们的想法是创建一个新密钥(任何给定密钥的小写版本),然后删除旧密钥。

请将相关代码添加到您的问题中,而不仅仅是一个fiddle链接。您是否收到一条错误消息,告诉您将代码放入问题中,而不仅仅是链接到JS fiddle?您需要将代码放在问题中,而不仅仅是说JS FIDLE的链接就是代码。检查这个out@DipaliVasani…在我的情况下,JSON与此不同。它在数组中有一个对象。检查此输出请将相关代码添加到您的问题中,而不仅仅是fiddle链接您是否收到错误消息,告诉您将代码放入问题中,而不仅仅是链接到JS fiddle?您需要将代码放在问题中,而不仅仅是说JS FIDLE的链接就是代码。检查这个out@DipaliVasani…在我的情况下,JSON与此不同。它在数组中有一个对象。选中此复选框将只更改为小写,而不是toUpperCase,以响应问题,并将函数convertKeysLowercase的名称更改为true。我已经改变了。多谢各位much@MarioChueca-实际上,我们的编码中有一个小问题。它将一切都转换为对象。我需要一个实际的JSON格式,因为它是键小写。这里的问题是行集是一个数组,它正在更改为object而不是object的数组。将只更改为Lowercase而不是toUpperCase,以响应问题,并将函数ConvertKeysLowercase的名称更改为true。我已经改变了。多谢各位much@MarioChueca-实际上,我们的编码中有一个小问题。它将一切都转换为对象。我需要一个实际的JSON格式,因为它是键小写。这里的问题是行集是一个数组,它正在更改为object而不是object的数组。