2

我正在使用以下代码来解析 JSON 文件的单行:

var str = '{ "jobID": "2598752", "account": "TG-CCR120014", "user": "charngda",
   "pkgT": {"mvapich2-new/1.2": { "libA": ["libmpich.so.1.1"], "flavor": ["default:pgi/7.2-5"] } },
   "startEpoch": "1338608868", "runTime": "48", "execType": "user:binary", "exec": "IOR", 
   "numNodes": "4", "sha1": "755187bd8550881bb0c9951822e74a9a53c8d0f3", "execEpoch": 1336757832, 
   "execModify": "Fr, Ma, 1, 12:37:1, 2012", "startTime": "Fr, Ju,  , 22:47:4, 2012",
   "numCores":  "64","sizeT": { "bss": "36224", "text": "3502656", "data": "128944" } }';
 var obj = JSON.parse(str);
 delete obj['flavor'];
 delete obj['pkgT'];
 var newstr = JSON.stringify(obj);
 document.write(str);

但是,我想解析整个 6000 行 JSON 文件。我如何逐行读取文件并删除字段,就像我对单行所做的那样。我对 Javascript 的经验为零,所以我不知道如何读取文件或创建新文件。我假设我会使用某种数组,但我不确定。任何人都可以帮忙吗?

4

2 回答 2

0

如果您的文件如下所示:

[{"jobID": "1",...},{"jobID": "2",...},{"jobID": "3",...},...]

你可以这样做:

var objArray = JSON.parse(str);

 for( var k=0; k<objArray.length; k++ ) {

 delete objArray[k]['flavor'];
 delete objArray[k]['pkgT'];

  }
var newstr = JSON.stringify(objArray);
document.write(newstr);

只需通过复制和粘贴将完整的文件内容添加到 str 变量即可。

如果您需要定期执行此操作,此解决方案将无济于事!

于 2013-04-11T06:34:11.513 回答
0

这样的事情可能会奏效。我没有一个 6000 行的 JSON 文件来测试它,但它至少应该让你清楚地知道下一步应该使用你的解决方案。

请记住,JSON 块只是普通的 javascript 对象,它们是一种已经具有自己的方法的数据结构,因此您可以通过使用标准对象迭代来迭代它们。

var bigObj = json.parse(jsonFile);
var objArray = [];
var newStr;
for (var obj in bigObj){
    if (bigObj.hasOwnProperty(obj)){
    delete obj['flavor'];
    delete obj['pkgT'];
    newStr = JSON.stringify(obj);
    objArray.push(newStr);
    }
}
document.write(objArray.join("/n").toString());
于 2013-04-11T09:28:38.750 回答