3

中国の weibo プラットフォームで RESTful Web サービス呼び出しを実行すると、次のような JSON ファイルが返されます。

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

つまり、100 個の内部オブジェクトを持つ配列です。私の目的は、これらのデータをリレーショナル データベース (SAP HANA) にインポートすることです。XML または csv 形式のファイルしかインポートできないため、小さな Java アプリを使用して JSON を XML に解析するのが最善の方法だと思います。すでに別の JSON 解析ライブラリを試しましたが、配列に問題があるようです。そこで、Apache json.org lib を選択し、InputStream を介して Web サービスを呼び出します。

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");

このスニペットでは、自動化を行わずに、テスト目的で 1 つのオブジェクトのみを読み取ります。基本的に今ここで 2 つの問題を扱っています。

最初: 中国語の簡体字を含む要素は ??? として表示されます。2 番目: XML 文字列に複数の要素を追加するにはどうすればよいですか?

私の質問に関するヒントと、より良い解決策の一般的なアイデアを教えていただければ幸いです。

4

1 に答える 1

0

問題は解決しました。

興味がある場合: 1 つのオブジェクトでネストされた「ステータス」要素にアクセスするには、次を使用します。

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

いくつかのオブジェクトを追加するには、StringBuilder メソッドを使用しました。

于 2013-12-06T12:50:00.817 に答える