我有一个json货币:
[
{
"acronym": "EUR",
"currency": "Euros",
"favorite": "true",
"placeholder": "\\u20ac00.00 EUR",
"symbol": "\\u20ac"
}
]
我把它放在资产文件夹中并解析如下:
InputStream stream = context.getAssets().open("currencies.json");
int size = stream.available();
byte[] buffer = new byte[size];
stream.read(buffer);
stream.close();
str = new String(buffer, "UTF-8");
然后我用GSON转换为我的pojo对象
Type objectType = new TypeToken<ArrayList<Currency>>(){}.getType();
ArrayList<Currency> currencies = gson.fromJson(json, objectType);
return currencies;
工作正常(我的pojo属性与json中的命名相同)。
无论其
例如,当我尝试显示符号时,它不会显示符号 我得到“\ u20ac”而不是“€”
txtAmount.setText(currency.getSymbol());
我已尝试过以下日志
Log.d(currency.getSymbol() + "\u20ac");
这给了我:
\u20ac€
我不明白为什么它不能正确显示字符..
答案 0 :(得分:1)
你的JSON已经逃脱了反斜杠,这意味着它是&#34;反斜杠u 20ac&#34;的JSON表示。
您需要做的就是 not 转义反斜杠,以便\u20ac
是欧元符号的JSON转义版本:
"symbol": "\u20ac"
我还建议使用Guava加载你的字符串,并使用try-with-resources语句:
String json;
try (Reader reader =
new InputStreamReader(context.getAssets().open("currencies.json"),
Charsets.UTF_8)) {
json = CharStreams.toString(reader);
}