1

我正在开发一个基于 struts+java+hibernate 框架的 Web 应用程序。底层数据库是 MySQL 5。

用户活动记录在数据库中,然后显示给其他用户。当用户进行某项活动时,与该活动有关的信息也与该活动一起存储。现在有一个实施更改。早些时候,这个活动信息被存储为纯文本,但现在它被存储为 json 以便于使用(考虑到这个信息可以有许多值为 null 的事实)。

存储的信息稍后用于在网页上显示活动。

对于所有新活动,(信息)数据在 java 代码中进行 JSON 编码,编码后的 JSON 字符串存储在 DB 中。问题在于与旧活动相对应的数据。

有没有办法对存储在 DB 中的数据进行 JSON 编码?或者 jquery/javascript 中是否有任何方法可以将字符串编码为 JSON 格式,然后正确构造回 Json 对象?

待存储在 DB 中的数据的一般格式(迁移后)为:

{"key1":"value1", "key2":"value2","key3":"value3",...}

数据库中已有的数据格式为:

value1,value2,value3,... 

这些值(即 value1、value2、value3、...)可以包含任何特殊字符。

4

3 回答 3

1

也许你想看看JSON.parseJSON.stringify方法。 http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/

于 2013-07-01T12:52:10.643 回答
0

在 jQuery 中,您可以使用以下代码对 json 进行编码:

var data  = {"key1":"value1", "key2":"value2","key3":"value3",...};
$.each(data,function(index,value)){
    alert(index+" | "+value);
});

使用$.eachjQuery的功能。

于 2013-07-01T12:51:18.903 回答
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 字符串化中添加的额外引号:

info = info.replace(/\"{'/g,"{\"");
info = info.replace(/'}\"/g,"\"}");
info = info.replace(/','/g,"\",\"");
info = info.replace(/':'/g,"\":\""); 

现在进行 JSON 解析:

info = JSON.parse(info);

结果是一个 JSON 对象。

于 2013-07-02T06:17:45.993 回答