我正在使用 libs-for-android 的 feed.jar,我需要解析 json 数据。我创建了类似于演示中使用的 XmlContentHandler.java 的 JsonContentHandler.java 类。
你能给我一个关于如何使用 JsonContentHandler 的例子吗?
谢谢你。
我正在使用 libs-for-android 的 feed.jar,我需要解析 json 数据。我创建了类似于演示中使用的 XmlContentHandler.java 的 JsonContentHandler.java 类。
你能给我一个关于如何使用 JsonContentHandler 的例子吗?
谢谢你。
示例输入:
{"results": [{"id": "1f3d", "title": "Result title", "content": "Some content"}, ...]}
示例代码:
public class MyContentHandler extends JsonContentHandler {
private final MatrixCursor mOutput;
public MyContentHandler(MatrixCursor cursor) {
mOutput = cursor;
}
@Override
protected Object getContent(String source) throws JSONException {
JSONObject data = new JSONObject(source);
int columnCount = output.getColumnCount();
JSONArray results = data.getJSONArray("results");
for (int i = 0; i < results.length(); i++) {
JSONObject result = results.getJSONObject(i);
String id = result.getString("id");
String title = result.getString("title");
String content = result.getString("content");
// Generate a positive integer ID for compatibility with CursorAdapter
Long baseId = Long.valueOf(Math.abs(id.hashCode()));
RowBuilder builder = output.newRow();
for (int columnIndex = 0; columnIndex < columnCount; columnIndex++) {
String columnName = output.getColumnName(columnIndex);
if (columnName.equals(MyContract.Items._ID)) {
builder.add(baseId);
} else if (columnName.equals(MyContract.Items.ID)) {
builder.add(id);
} else if (columnName.equals(MyContract.Items.TITLE)) {
builder.add(title);
} else if (columnName.equals(MyContract.Items.CONTENT)) {
builder.add(content);
} else {
throw new RuntimeException("Unknown column: " + columnName);
}
}
}
// Tell FeedLoader how many rows were added
return FeedLoader.documentInfo(results.length());
}
}