带有中文字符的JSON在java中为RDB处理XML

时间:2013-12-04 14:02:18

标签: java xml json weibo

我正在中国微博平台上做一个RESTful webservice调用,得到一个JSON文件作为回报,如下所示:

[{
"id": 2098220080,
"idstr": "2098220080",
"class": 1,
"screen_name": "王理巍", .....}]

所以它是一个包含100个内部对象的数组。我的目标是将这些数据导入关系数据库(SAP HANA)。由于我只能导入XML或csv格式的文件,我认为最好的方法是使用一些小型Java应用程序将JSON解析为XML。 我已经尝试过不同的JSON解析库,但数组似乎存在问题。所以我选择了Apache json.org lib并通过InputStream调用webservice。

public static void main(String[] args) throws IOException {

String date, userName = null, text, gender, city, location, province;
int userId = 0, statusId;
URL url = null;

    try {
    url = new URL("https://api.weibo.com/2/suggestions/users/hot.json?client_id=1637521539&access_token=2.00xusAWD0YuxsZ10f9689fa7sIoHJC&category=auto");
} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

//Call URL as InputStream
try (InputStream is = url.openStream();
    JsonReader rdr = Json.createReader(is)) {

    JsonArray results = rdr.readArray();

    //System.out.println(results.toString());

    JsonObject[] objects = new JsonObject[100];
    JsonObject o1 = results.getJsonObject(0);
    //System.out.println(o1);

    //Read each element
    try {
    userId = o1.getInt("id");
    userName = o1.getString("name");
    province = o1.getString("province");
    city = o1.getString("city");
    location = o1.getString("location");
    gender = o1.getString("gender");
    date = o1.getString("created_at");
    statusId = o1.getInt("id");
    text = o1.getString("text");
    } catch (NullPointerException npe) {
        System.out.println("No value");
    }

    //Build XML
    String xmlString = XML.toString(userId,"id");
    xmlString = XML.toString(userName, "name");

在这个片段中,我只读了一个对象用于测试目的而没有任何自动化。我现在基本上处理2个问题。

首先:包含中文简体字符的元素显示为??? 第二:如何将多个元素附加到XML-String?

我非常感谢您提出有关我的问题的提示以及一些可能更好的解决方案的一般性建议。

1 个答案:

答案 0 :(得分:0)

好的问题已经解决了。

如果你感兴趣:要访问一个对象中的嵌套“status”元素,只需使用

JsonObject status = o1.getJsonObject("status");

为了附加几个对象,我使用了StringBuilder方法。