hoge.xmlなどのxmlファイルをjsonへ変換する方法は簡単に見つかったのですが、
通信結果などのレスポンスの生xml(表現あってんのか?)jsonに変換する方法があまり引っかからなかったのでメモ。
AmazonのProduct Advertising APIのレスポンスがxmlだったので使うことになりました。
JSONICをインポート
こちらからダウンロードできます。
ダウンロードしたjarファイルは、libフォルダに入れてください。
JSONICのメソッドは
JSON.encode(Document docment)
を利用します。
サンプルコード
staticメソッドですのでこのままコピペで動きます。
引数や返り値は適宜変更してください。
public static JSONArray responseToJson(HttpResponse res) {
if (res == null){
return null;
}
HttpEntity httpEntity = res.getEntity();
JSONArray jsonArray = null;
try {
String xml = EntityUtils.toString(httpEntity, "UTF-8");
Log.d("convert", "xml= "+ xml);
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new InputSource(new ByteArrayInputStream(xml.getBytes("UTF-8"))));
String json = JSON.encode(doc);
Log.d("convert", "json= "+ json);
jsonArray = new JSONArray(json);
} catch (JSONException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
return jsonArray;
}
参考
JSONIC - simple json encoder/decoder for java
StackOverFlow java.net.MalformedURLException: no protocol
0 件のコメント:
コメントを投稿