2017-08-04 41 views
0

我存储JSP一个HashMap中hiddeninput元素将存储在hiddenput以JSON在JS

如何可以解析它变成我的javascript JSON对象的地图?

,当我在我的JS输出打印隐藏的输入变量的值是这样的:

{zipcode=560036, fmid=xyz, quantity=1} 
+0

可能你需要一个JS对象。以JSON格式存储值,很容易转换为JS对象。 – Teemu

+0

是否也包含嵌套的对象/数组? –

回答

0

这是更好地从服务器传递JSON string这样你就可以轻松地分析。如果你有这样一个简单的对象结构(你的例子),你可以尝试拆分它,并采取eack键/值对。这里是一个例子

var mapAsStr = "{zipcode=560036, fmid=xyz, quantity=1}"; 
 
var convertToObj = function(str) { 
 
    var obj = {}; 
 
    str.replace(/\{|\}/g, '').split(',').forEach(function(pair) { 
 
     var keyVal = pair.split("="); 
 
     var key = keyVal[0].trim(); 
 
     var val = keyVal[1].trim(); 
 
     val = isNaN(val) ? val : parseFloat(val); 
 
     obj[key] = val; 
 
    }); 
 
    return obj; 
 
} 
 
console.log(convertToObj(mapAsStr));

但要注意,你可以用这个仅进行,如果你有原始值的平面物体的结构。

+0

嗨,这个作品,但我有一个问题:这是做什么? “str.replace(/ \ {| \}/g,'')”。另外为什么我们要解析val来浮动?:“parseFloat(val);” – user2696258

+0

而你的意思是“这只有当你有一个带有原始值的扁平物体结构”?我在我的JSP中设置了一个HashMap,并且这个maP将永远像给出这个问题一样。我不明白你在这里的原始值是什么意思,这些可以是任何正确的? – user2696258

+0

@ user2696258'str.replace(/ \ {| \}/g,'')'用于从字符串中删除起始的'{'和结尾的'},然后基本上用','分割dtring,然后分割每个令牌由'='来获取'key'&'value'对。平坦的结构意味着你的所有键都将拥有原始值,而不是嵌套对象。在这种情况下,这种逻辑将无法正常工作,因为这些键将在值中包含“{” –