Разбор JSON, который содержит символы других языков в кодировке UTF-8 - PullRequest
0 голосов
/ 26 марта 2019

У меня есть JSON ниже, который содержит специальный символ:

{
  "Laptopà":"Dell"
}

Когда я пытаюсь разобрать это в Eclipse IDE с UTF-8 Кодировкой символов, я получаю JSONException , заявляя JSONObject not found . Ниже приведен фрагмент кода, который я использовал для разбора,

import org.json.JSONObject;

JSONObject jsonObj = new JSONObject(json);
jsonObj.getString("Laptopà");

Что дает следующее исключение:

org.json.JSONException: JSONObject["Laptop(Junk Character instead of à)"] not found

Я долго искал и не нашел подсказки. Ждем вашей помощи в решении этой проблемы.

1 Ответ

0 голосов
/ 27 марта 2019

Если вы прочитали JSON полезную нагрузку от File, вам нужно использовать JSONTokener. Если в вашем классе Java указано JSON как String, проверьте, хранится ли файл в кодировке UTF-8. Пример кода:

import org.json.JSONObject;
import org.json.JSONTokener;

import java.io.File;
import java.io.FileReader;

public class OrgJsonApp {

    public static void main(String[] args) throws Exception {
        final String key = "Laptopà";

        File jsonFile = new File("./resource/test.json").getAbsoluteFile();

        // Read from file
        JSONObject jsonObject = new JSONObject(new JSONTokener(new FileReader(jsonFile)));
        System.out.println(jsonObject.getString(key));

        // Read from `JSON` string
        System.out.println(new JSONObject("{\"Laptopà\":\"Dell\"}").getString(key));
    }
}

Над кодом печатается правильно Dell два раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...