Как преобразовать любые закодированные значения специальных символов в строку и вставить ее в объект JSON в java? - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь вставить символ валюты (например, евро) в JSON объект в java. У меня есть закодированная строка евро (\ u20A C. У нас могут быть различные другие символы, \ t и другие). Когда я пытался использовать обычную строковую переменную, он автоматически конвертируется в символ евро и пространство табуляции, но когда я вставляю его в объект JSON, он не конвертируется. Я пытался использовать метод java. net .URLDecoder.decode (), но он также не работает.

    String s1 = "pqr\u20ACab\tcd";

    JSONObject temp = new JSONObject();
    temp.put("field", java.net.URLDecoder.decode(s1));
    System.out.println(s1);
    System.out.println(temp);

Ниже приведен вывод, полученный мной

   pqr€ab   cd
   {"field":"pqr\u20ACab\tcd"}

Ответы [ 2 ]

0 голосов
/ 11 января 2020

com.google.gson.JsonParser удаляет знак евро:

    String s1 = "pqr\u20ACab\tcd";
    JSONObject temp = new JSONObject();
    temp.put("field", s1);
    System.out.println(JsonParser.parseString(String.valueOf(temp)));

Этот вывод {"field": "pqr € ab \ tcd"}

0 голосов
/ 11 января 2020

Я не уверен в ваших точных требованиях, но для решения вышеуказанного случая.

ByteArrayOutputStream out = new ByteArrayOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(out, "utf-8");
temp.write(writer);
writer.flush();
String jsonString = new String(out.toByteArray(),"utf-8");
JSONObject newJSON = new JSONObject(jsonString);
String newJsonString = newJSON.getString("field");
System.out.println(newJsonString );
...