Конвертировать из LinkedHashMap в строку Json

Я работаю с Mongo, используя Jongo, когда я делаю запрос, я получаю LinkedHashMap в результате.

        Iterator one = (Iterator) friends.find(query).projection("{_id:0}").as(Object.class);
        while (one.hasNext()) {
            LinkedHashMap data= new LinkedHashMap();

            data= (LinkedHashMap) one.next();
            String content=data.toString();
        }

проблема в том, что если JSON {"user":"something"} содержимое будет {user=something}, это не JSON-это только метод toString из HashMap.

Как я могу получить оригинальный JSON?.

У меня нет класса для отображения ответа, и это не решение создать класс карты, поэтому я использую объект.класс.

5 ответов


если у вас есть доступ к некоторой библиотеке JSON, похоже, что это путь.

при использовании org.библиотека json, используйте public JSONObject(java.util.Map map):

String jsonString = new JSONObject(data).toString()

если Gson, используйте gson.toJson() метод, упомянутый @hellboy:

String jsonString = new Gson().toJson(data, Map.class);

вы можете использовать библиотеку Gson из Google для преобразования любого объекта в JSON. Вот пример преобразования LinkedHashMap в json -

Gson gson = new Gson();
String json = gson.toJson(map,LinkedHashMap.class);

один из COM.в MongoDB.Конструкторы BasicDBObject принимают карту в качестве входных данных. Затем вам просто нужно вызвать toString () для объекта BasicDBObject.

Iterator one = (Iterator) friends.find(query).projection("{_id:0}").as(Object.class);
    while (one.hasNext()) {
        LinkedHashMap data= new LinkedHashMap();

        data= (LinkedHashMap) one.next();

        com.mongodb.BasicDBObject bdo = new com.mongodb.BasicDBObject(data);    
        String json = bdo.toString();
    }

Я решил проблему, используя следующий код:

    Iterator one = (Iterator) friends.find(query).projection("{_id:0}").as(Object.class);
    while (one.hasNext()) {
        Map data= new HashMap();

        data= (HashMap) one.next();
        JSONObject d = new JSONObject();
        d.putAll(data);
        String content=d.toString();
    }

String content = data.toString()
.replaceAll("=", "\":\"")
.replaceAll(",", "\",\"")
.replaceAll("}", "\"}")
.replaceAll("{", "{\"");