如何json编码一个字符串

时间:2013-07-01 12:47:49

标签: javascript jquery mysql phpmyadmin

我正在开发基于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,...)可以包含任何特殊字符。

3 个答案:

答案 0 :(得分:1)

也许您想看看JSON.parseJSON.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对象。