2017-08-04 64 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'對。平坦的結構意味着你的所有鍵都將擁有原始值,而不是嵌套對象。在這種情況下,這種邏輯將無法正常工作,因爲這些鍵將在值中包含「{」 –