如何将JSON数据保存到数据库

时间:2012-03-21 02:56:14

标签: java getjson 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();

2 个答案:

答案 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