我正在开发基于struts + java + hibernate框架的Web应用程序。底层数据库是MySQL 5.
用户活动记录在数据库中,稍后显示给其他用户。当用户进行某些活动时,与活动有关的信息也与活动一起存储。现在有一个实施变化。此前,此活动信息以纯文本形式存储,但现在将其存储为json以便于使用(考虑到此信息可以将许多值作为null)。
以后存储的信息用于在网页上显示活动。
对于所有新活动,(信息)数据在Java代码中获得JSON编码,编码的JSON字符串存储在DB中。问题在于与旧活动相对应的数据。
有没有办法JSON编码存储在DB中的数据?或者在jquery / javascript中有什么方法可以用JSON格式对字符串进行编码,然后正确地构造Json对象吗?
要存储在DB中的数据的一般格式(迁移后)是:
{"key1":"value1", "key2":"value2","key3":"value3",...}
数据库中的数据格式为:
value1,value2,value3,...
这些值(即value1,value2,value3,...)可以包含任何特殊字符。
答案 0 :(得分:1)
也许您想看看JSON.parse
和JSON.stringify
方法。
http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
答案 1 :(得分:0)
在jQuery中,您可以使用以下代码对json进行编码:
var data = {"key1":"value1", "key2":"value2","key3":"value3",...};
$.each(data,function(index,value)){
alert(index+" | "+value);
});
使用jquery的$.each
函数。
答案 2 :(得分:0)
解决方法如下:
说上面的json字符串在一个名为info的变量中,然后首先将所有外部双引号替换为键和值,使用单引号,如
info = info.replace(/{\"/g,"{'");
info = info.replace(/\"}/g,"'}");
info = info.replace(/\",\"/g,"','");
info = info.replace(/\":\"/g,"':'");
现在进行JSON字符串化处理:
info = JSON.stringify(info);
现在恢复外部双引号并删除JSON stringification上添加的额外引号:
info = info.replace(/\"{'/g,"{\"");
info = info.replace(/'}\"/g,"\"}");
info = info.replace(/','/g,"\",\"");
info = info.replace(/':'/g,"\":\"");
现在进行JSON解析:
info = JSON.parse(info);
结果是一个JSON对象。