我试图将网站的JSON响应保存到数据库。后者我正在访问这个JSON字符串来处理数据。但我无法将其解析为JSON对象。在分析时我意识到字符串的字符需要被转义。由于我将数据保存为一个字符串,因此作为JSON数据返回的数据结果不会在数据库中转义。有什么方法可以将JSON数据保存到数据库。如何将JSON数据保存到数据库
实施例:
{"RULE":[{"replace":{"value":"","type":"text"},"match":{"value":"<a [^>]*><img src="[^"]*WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites[^>]*>\s*</a>","type":"text"}},{"replace":{"value":"","type":"text"},"match":{"value":"<a [^>]*><img src="[^"]*WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites[^>]*>\s*</a>","type":"text"}}]}
想要在数据库中保存为(也得到响应时)即“和\被转义
{"RULE":[{"replace":{"value":"","type":"text"},"match":{"value":"<a [^>]*><img src=\"[^\"]*WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites[^>]*>\\s*</a>","type":"text"}},{"replace":{"value":"","type":"text"},"match":{"value":"<a [^>]*><img src=\"[^\"]*WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites[^>]*>\\s*</a>","type":"text"}}]}
这里是我已经用来保存代码数据库中的数据
// here the raw_data is the data from the website
JSONObject jo = new JSONObject(raw_data);
// Get the JSONObject value associated with the search result key.
jo = jo.getJSONObject("pipe");
jo = jo.getJSONObject("definition");
String def=jo.toString();
JSONArray jo1=jo.getJSONArray("modules");
JSONArray jo2=jo.getJSONArray("wires");
/*
* Write the contents in the data base
*
*
*/
def =def.replaceAll("[']", "\\\\\'"); //creates problem for strings with '
def =def.replaceAll("&", "%26");
String tablename="PipesTable2";
System.out.println(def);
database d=new database();
该网站向您发送一个包含json的字符串。该字符串已经具有必要的转义。如果没有,你收到的json将不可读。所以当你收到数据时你在做什么?这听起来像你正在使用一些json库来取消你收到的数据。可以使用同一个库来重新转义它。 – 2012-03-21 03:13:11
如果您使用正确的数据库操作,则在将数据存储到数据库之前,您不需要将字符串转义。当然,在将它们用作JSON值之前,您可能需要转义(奇怪的)XML/HTML字符串,但这与数据库无关。 – 2012-03-21 03:26:44
@ andrew我已经添加了我写的代码来保存数据库中的数据。其实我正在将数据是JSON转换为一个字符串(原因是我需要用[]括号括起来替换一些内容),然后转换的字符串我保存在数据库 – Judy 2012-03-21 03:30:24