org.bson.Document для json- тайский вопрос характера - PullRequest
0 голосов
/ 17 октября 2018
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("mydb");
MongoCollection<Document> collection = database.getCollection("testCollection");

Document document= Document.parse("{'author' : 'Punama','answer' : 'อาม่า(เจ้าของ)'}");

collection.insertOne(document);         
System.out.println("Record inserted.....");         

JsonWriterSettings settings = JsonWriterSettings.builder().outputMode(JsonMode.SHELL).build();
FindIterable<Document> findIterable=collection.find();

for(Document doc: findIterable){
    System.out.println(doc.toJson(settings));
}

Это вывод doc.toJson (настройки):

{ "_id" : ObjectId("5bc70756d47228167ce6f2a1"), "author" : "Punama", "answer" : "อาม\u0e48า(เจ\u0e49าของ)" }

Ожидаемый вывод:

{ "_id" : ObjectId("5bc70756d47228167ce6f2a1"), "author" : "Punama", "answer" : "อาม่า(เจ้าของ)" }

Пожалуйста, помогите мне сделать это.toJson (-) не печатает точный вывод.Он напечатает коды ASCII.Нужен вывод типа "อา ม่า (เจ้าของ)".

Ниже код решает мою проблему, но этот устаревший метод (JSONSerializers.getLegacy ()) устарел в версии 3.8 для драйвера mongo.

String afterSerialization =JSONSerializers.getLegacy () сериализации (док).

1 Ответ

0 голосов
/ 07 февраля 2019

Извините за поздний ответ.Мы должны использовать org.json.jar, чтобы избавиться от проблемы тайских персонажей.

while (cursor.hasNext()) {

        Document d=cursor.next();                   
        JSONObject object=new JSONObject(d); //import org.json.JSONObject;
        System.out.println(object.toString());
    }

Это даст правильный вывод.

...