我有编译从原始文件夹中读取本地.json的问题。 ParseJson类与示例官方相同:http://developer.android.com/reference/android/util/JsonReader.html
我传递了一个InputSteam并且我正确地获得了一个List但是有错误的字符('1/4等)并且我使用了UTF-8到ParseJson。
我的inputStream会出错吗?我应该在UTF-8中编码我的InputStream之前将其传递给ParseJson吗?
entrantes.json
[
{
"foto": "ajocolorao";
"nombre": "Ajocolorao",
"pueblo":"Alfarnatejo",
"ingredientes": "(4 personas)\n -¼ kg de bacalao\n -El zumo de ½ limón"
}
]
获取.json
List<Receta> listRecetas = new ArrayList<Receta>();
InputStream inpuStream = getResources().openRawResource(R.raw.entrantes);
ParseJson parse = new ParseJson();
listRecetas = parse.readJsonStream(inputStream);
ParseJson.java
public class ParseJson {
public List<Receta> readJsonStream(InputStream in) throws IOException {
JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
try {
return readRecetasArray(reader);
} finally {
reader.close();
}
}
public List<Receta> readRecetasArray(JsonReader reader) throws IOException {
List<Receta> recetas = new ArrayList<Receta>();
reader.beginArray();
while (reader.hasNext()) {
recetas.add(readReceta(reader));
}
reader.endArray();
return recetas;
}
public Receta readReceta(JsonReader reader) throws IOException {
String foto = null;
String nombre = null;
String pueblo = null;
String ingredientes = null;
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("foto") && reader.peek() != JsonToken.NULL) {
foto = reader.nextString();
} else if (name.equals("nombre")) {
nombre = reader.nextString();
} else if (name.equals("pueblo")) {
pueblo = reader.nextString();
} else if (name.equals("ingredientes")
&& reader.peek() != JsonToken.NULL) {
ingredientes = reader.nextString();
} else {
reader.skipValue();
}
}
reader.endObject();
return new Receta(foto, nombre, pueblo, ingredientes);
}
}
非常感谢,抱歉,但我的英语很糟糕。