Java脚本转换json数据

java script to transform json data

本文关键字:数据 json 转换 脚本 Java      更新时间:2023-09-26

我的调查结果如下{"a":"1","b":"2","c":"1","d":"0","e":"please improve","Id":"789"},当它到达jsp时,我想把0改为good, 1改为bad, 2改为ok,这是a,b,c,d的输出,我们如何使用foreach函数来做到这一点

像这样?

var input = {"a":"1","b":"2","c":"1","d":"0","e":"please improve","Id":"789"};
var mapvals = {"0":"good", "1":"bad", "2":"ok"};
var newObject = Object.keys(input).reduce(function(previous, current) {
    previous[current] = mapvals[input[current]] || input[current];
    return previous;
}, {});
console.log(newObject);
给了

:

{
  a: "bad",
  b: "ok",
  c: "bad",
  d: "good",
  e: "please improve",
  Id: "789"
}

如果你真的想要,你可以用forEach函数手动完成…但是我把它留给你。

foreach()map()只在数组上工作,所以它们不能直接在对象上使用。您必须首先使用keys()entries()函数来将对象中的字段作为数组获取。

遗憾的是,Object.entries()目前只适用于Firefox(*)。然而,碰巧的是,keys()生成了更简单的代码。

var input = {"a":"1","b":"2","c":"1","d":"0","e":"please improve","Id":"789"};
var mapvals = {"0":"good", "1":"bad", "2":"ok"};
var output = {};
Object.keys(input).forEach(function(key) {
    output[key] = mapvals[input[key]] || input[key];
});
console.log(output);

(*)它也可以在Chrome中使用,但只能在配置标志后面。

可以在序列化对象时转换值。在将json发送到后端之前:

var data = {"a":"1","b":"2","c":"1","d":"0","e":"please improve","Id":"789"};
var mapvals = {"0":"good", "1":"bad", "2":"ok"};
var json = JSON.stringify(data, (key, value) => key && value in mapvals? mapvals[value]: value);
json:

{"a":"bad","b":"ok","c":"bad","d":"good","e":"please improve","Id":"789"}

您还可以添加进一步的"过滤器",以仅对某些键应用此逻辑

还可以处理更复杂的数据,比如您提到的数组。

var data = [
    {"a":"0","b":"2","c":"0","d":"0","e":" ","id":"456"},
    {"a":"0","b":"0","c":"0","d":"0","e":"test","i‌​d":"123"},{"a":"0","‌​b":"2","c":"0","d":"‌​0","e":"please test ","id":"456"},
    {"a":"0","b":"2","c":"0","d":"0","e":" ","id":"456"},
    {"a":"0","b":"1","c":"1","d":"0","e":" ","id":"456"},
    {"a":"2","b":"2","c":"2","d":"2","e":" ","id":"789"},
    {"a":"1","b":"1","c":"1","d":"1","e":"survey ","id":"789"},
    {"a":"1","b":"1","c":"2","d":"2","e":"1234567"‌​,"id":"789"},
    {"a":"0‌​","b":"0","c":"0","d‌​":"0","e":" ","id":"234"}
];
var mapvals = {"0":"good", "1":"bad", "2":"ok"};
var json = JSON.stringify(data, (key, value) => key && value in mapvals? mapvals[value]: value);
json:

[{"a":"good","b":"ok","c":"good","d":"good","e":" ","id":"456"},{"a":"good","b":"good","c":"good","d":"good","e":"test","id":"123"},{"a":"good","b":"ok","c":"good","d":"good","e":"please test ","id":"456"},{"a":"good","b":"ok","c":"good","d":"good","e":" ","id":"456"},{"a":"good","b":"bad","c":"bad","d":"good","e":" ","id":"456"},{"a":"ok","b":"ok","c":"ok","d":"ok","e":" ","id":"789"},{"a":"bad","b":"bad","c":"bad","d":"bad","e":"survey ","id":"789"},{"a":"bad","b":"bad","c":"ok","d":"ok","e":"1234567","id":"789"},{"a":"good","b":"good","c":"good","d":"good","e":" ","id":"234"}]