JSONのキーと値を2つのJSONファイル(英語とポルトガル語)からCSVに変換するJSONParserを作成しようとしています。JSON値内でエスケープ文字を解析する方法は?
ただし、CSVが生成されると、エスケープ文字は引き続きテキストに表示されます。私はOracleのJSONPを使用しています。どのようにエスケープ文字を解析できますか?他のライブラリを使用する必要がありますか?
例
キー: "validation.msg.calendar.repeating.cannot.be.blank":値(inPortuguese): "\" Repetindo \」pode SERの全角ブランコNAO。 "、
CSVファイルへの出力は、 \" Repetindo \ "にあります。 。
ライブラリー「のエスケープを解析されていない はありがとう
public class JSONParser {
private String DELIMITER=",";
private StringBuilder sb = new StringBuilder("Termo"+DELIMITER+"Inglês"+DELIMITER+"Português\r\n");
private Writer wrt;
private JsonObject obj1, obj2;
private HashMap<String, String> hm1, hm2;
private Iterator<String> it1, it2;
public JSONParser(InputStream fis, InputStream fis2) {
obj1 = readJson(fis);
obj2 = readJson(fis2);
it1 = getIterator(obj1.keySet());
it2 = getIterator(obj2.keySet());
hm1 = createHashMap(obj1, it1);
hm2 = createHashMap(obj2, it2);
}
public HashMap<String, String> createHashMap(JsonObject obj, Iterator<String> it) {
HashMap<String, String> hm = new HashMap<String, String>();
while (it.hasNext()) {
String key = it.next();
hm.put(key, obj.get(key).toString());
}
return hm;
}
public JsonObject readJson(InputStream fis) {
JsonReader reader = Json.createReader(fis);
JsonObject obj = reader.readObject();
reader.close();
return obj;
}
public Iterator<String> getIterator(Set<String> keys) {
Iterator<String> it = keys.iterator();
return it;
}
public void generateCSV(String filename) throws IOException {
wrt = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "ISO-8859-1"));
Set<String> keys = obj1.keySet();
Iterator<String> it = keys.iterator();
while (it.hasNext()) {
String key = it.next();
if(key.startsWith("#")) continue;
String pt = "";
if (hm2.get(key) != null)
pt = hm2.get(key).toString();
sb.append("\""+key+"\"" + DELIMITER + hm1.get(key).toString() + DELIMITER + pt +"\r\n");
}
wrt.write(sb.toString());
wrt.close();
}
}
何を話している "文字をエスケープ" を使用して得たことができますか?サンプルの入力と出力を表示できますか? – Hulk
に例を追加しました! :) –