如何从JSON文件中删除键/值对

时间:2015-05-21 00:39:08

标签: javascript json sublimetext sublimetext3

我有一个大的JSON文件,我需要删除

的键/值对的每个实例

示例:

"LastModifiedDate" : "2015-05-20T23:41:46.000+0000" 

来自不同级别的几个对象。密钥始终相同,但每个密钥的日期时间值不同。

有没有办法使用Sublimetext和全局替换或宏删除所有这些?或者像jq这样的实用程序?

问题是我正在尝试序列化这个并且此密钥不存在因此失败。我希望在序列化之前将其删除。如果那是不可能的,我可以在序列化之前实现一个javascript解决方案。

3 个答案:

答案 0 :(得分:2)

尝试使用sublime文本搜索并替换为正则表达式:

"LastModifiedDate".*$

并且无需替换

答案 1 :(得分:1)

这是一个简洁的解决方案,因为您没有提供有关JSON文件的更多详细信息。假设您有一个JSON数组并且所有对象都包含此键值对,则此解决方案应该可以正常工作。在javascript中:

for(var i = 0; i < jsonArray.length; i++) {
    delete jsonArray[i]['LastModifiedDate'];
}

我假设的示例JSON输入数据如下:

jsonArray = [{
    "LastModifiedDate": "2015-05-20T23:41:46.000+0000",
    "BookID": "1",
    "Author": "Mr.X"
},
{
    "LastModifiedDate": "2015-05-21T23:41:46.000+0000",
    "BookID": "2",
    "Author": "Mr.Y"
},
{
    "LastModifiedDate": "2015-05-22T23:41:46.000+0000",
    "BookID": "3",
    "Author": "Mr.Z"
}]

在对此数据执行上述javascript代码后,jsonArray的值将更改为:

[{
    "BookID": "1",
    "Author": "Mr.X"
},
{
    "BookID": "2",
    "Author": "Mr.Y"
},
{
    "BookID": "3",
    "Author": "Mr.Z"
}]

这是fiddle

答案 2 :(得分:0)

var s = JSON.stringify(jsonArray); var p = s.replace(/&#34; LastModifiedDate [^,}] +,/ g,&#39;&#39;);

NewjsonArray = JSON.parse(p);

现在你有了#&#34; LastModifiedDate&#34;关键,价值对。