我的REST控制器需要以下格式的请求输入,它成功地将其转换为包含映射和字符串作为参数的Java对象:
{
"myMap" : {
"key1": "value1",
"key2": "value2",
"key3": "value3"},
"myString": "string value"
}
我从html表单中获取数据,如下所示:
var myMap = new Map();
var String = document.getElementById('String').value;
for (var i = 0 ; i<anArray.length ; i++){
var input = document.getElementsByClassName('input_' + (i+1));
for (var j = 0 ; j<3 ; j++){
if (input[j].checked){
myMap.set(input[j].name, input[j].id);
}
}
}
基本上,这段代码可以归结为:
var myMap = new Map();
myMap.set("key1", "value1");
myMap.set("key2", "value2");
myMap.set("key3", "value3");
这会导致包含{key1=的映射
var myJson = {};
myJson.myMap = myMap;
myJson.myString = myString;
var json = JSON.stringify(myJson);
但是,我最终会得到以下字符串:'{"myMap":{},"String":"myString"}'。所以我可能必须做一些不同的事情来对地图进行字符串化,但是我尝试的都不起作用。
有人能帮我吗?
JSON字符串化对对象、数组和函数具有特殊的行为。
例如:
JSON.stringify( function(){} ); // output: undefind
JSON.stringify( [2,undefined,function(){}, 5] ); //output: "[2,null,null,5]"
解决这个问题的一种方法是为其定义一个toJSON()方法,该方法返回对象的JSON安全版本。
var myJson = {};
myJson.toJson = function() {
return { /* what ever you need*/}
}
其次,更简单的是,使用ES6语法:
JSON.stringify([...myMap]);
使用ES6语法,尤其是如果您有嵌套映射(否则IdanDagan的答案更简单),您可以使用JSON。stringify()的第二个参数是reducer,如下所示:
JSON.stringify(myMap, (key, value) => (value instanceof Map ? [...value] : value));
您可以编写一个简短的转换函数,将映射转换为可以字符串化的对象。
console.clear()
function mapToObj(map){
const obj = {}
for (let [k,v] of map)
obj[k] = v
return obj
}
const myMap = new Map();
myMap.set("key1", "value1");
myMap.set("key2", "value2");
myMap.set("key3", "value3");
const myString = "string value"
const myJson = {};
myJson.myMap = mapToObj(myMap);
myJson.myString = myString;
const json = JSON.stringify(myJson);
console.log(json)
我有以下课程: 我想使用Java流创建一个
本文向大家介绍String s = new String("xyz");创建了几个String Object?相关面试题,主要包含被问及String s = new String("xyz");创建了几个String Object?时的应答技巧和注意事项,需要的朋友参考一下 答: 两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
问题内容: 我的私钥和公钥在base64中的字符串中,该字符串使用ANS1 DER进行编码。我尝试创建Java 和的实例: 我在中收到以下错误。 我猜我应该对公共密钥做类似的事情,就像在第2行和第3行中对私有密钥做一样。因为证书也是加密的。有什么建议? 问题答案: 为了测试您的方案,我创建了一个RSA私钥。 然后,我已将此密钥转换为PKCS#8 DER格式。 的手册将PKCS#8和DER都称为 格
问题内容: MySQL中有没有办法从DATE类型的给定属性和TIME类型的给定属性创建DATETIME? 问题答案:
我有一个类似这样的JSON: 我正在尝试将此结构映射到 Spark 架构。我已经创建了以下内容;但是它不起作用。我还尝试在值字段映射中移除。 另外,请注意,它们“key1”和“key2”是动态字段,将使用唯一标识符生成。也可以有两个以上的键。有没有人能够将数组类型映射到结构类型?