我正在尝试将网站的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();
答案 0 :(得分:2)
我建议你创建一个具有映射到json的属性的类。您可以使用第三方工具将对象转换为json或json对象。您可以使用Gson。
现在,当你获得josn时你可以做什么,你可以将这个json转换为object并将该对象的属性保存到数据库。检索值时,将这些值设置为object的属性,然后将此对象转换为json。
你可以在这里找到Gson - http://code.google.com/p/google-gson/
这很容易使用。
答案 1 :(得分:1)
您是否考虑使用像Jackson(http://wiki.fasterxml.com/JacksonHome)这样的库在Json对象和Java对象之间进行转换?然后,您可以使用标准Java持久性工具和库将其保存到数据库中/从数据库中读取它,它将自动处理所有转义。
杰克逊有两种主要方式可以在Json和Java对象之间进行转换。如果您计划使用直接JDBC调用来实现持久性,并且您不想进行太多其他处理,那么您可以使用“简单数据绑定”。这只是在Json和Java的内置类型(List,Map,String,Boolean,Number)之间进行转换。
如果您计划对数据进行Java处理,或者想要使用像Hibernate这样的持久性框架,则需要“完整数据绑定”。这使用POJO和注释为您的对象提供更复杂的结构。
这里有一个很好的,非常简洁的教程,涵盖了两个选项: http://wiki.fasterxml.com/JacksonInFiveMinutes