Как преобразовать объект Java в JSONObject?

#java #android #json #type-conversion #jsonobject

#java #Android #преобразование типов #json

Вопрос:

мне нужно преобразовать POJO в JSONObject (org.json.JSONObject)

Я знаю, как преобразовать его в файл:

     ObjectMapper mapper = new ObjectMapper();
    try {
        mapper.writeValue(new File(file.toString()), registrationData);
    } catch (JsonGenerationException e) {
        e.printStackTrace();
    } catch (JsonMappingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
  

Но на этот раз мне не нужен файл.

Комментарии:

1. Для этого есть много библиотек: Jackson, Jettison. Вы также можете использовать JAXB с MOXy.

Ответ №1:

Если мы анализируем все классы моделей сервера в формате GSON, то это лучший способ преобразовать объект Java JSONObject.In в приведенный ниже код SampleObject — это объект Java, который преобразуется в JSONObject .

 SampleObject mSampleObject = new SampleObject();
String jsonInString = new Gson().toJson(mSampleObject);
JSONObject mJSONObject = new JSONObject(jsonInString);
  

Комментарии:

1. Я думаю, что это самый простой, простой и эффективный способ 🙂

Ответ №2:

Если это не слишком сложный объект, вы можете сделать это самостоятельно, без каких-либо библиотек. Вот пример того, как:

 public class DemoObject {

    private int mSomeInt;
    private String mSomeString;

    public DemoObject(int i, String s) {

        mSomeInt = i;
        mSomeString = s;
    }

    //... other stuff

    public JSONObject toJSON() {

        JSONObject jo = new JSONObject();
        jo.put("integer", mSomeInt);
        jo.put("string", mSomeString);

        return jo;
    }
}
  

В коде:

 DemoObject demo = new DemoObject(10, "string");
JSONObject jo = demo.toJSON();
  

Конечно, вы также можете использовать Google Gson для более сложных вещей и менее громоздкой реализации, если вы не возражаете против дополнительной зависимости.

Комментарии:

1. В итоге я сделал что-то вроде этого 🙂

2. Измените последнюю строку на JSONObject=gson . toJSON(demo) не demo.toJSON()

Ответ №3:

Приведенный ниже пример был в значительной степени взят из руководства mkyongs. Вместо сохранения в файл вы можете просто использовать String json представление вашего POJO в формате json.

 import java.io.FileWriter;
import java.io.IOException;
import com.google.gson.Gson;

public class GsonExample {
    public static void main(String[] args) {

        YourObject obj = new YourOBject();
        Gson gson = new Gson();
        String json = gson.toJson(obj); //convert 
        System.out.println(json);

    }
}
  

Комментарии:

1. нужна ли мне для этого библиотека Gson?

2. Да, вам нужно добавить библиотеку Google gson.

Ответ №4:

Вот простой способ преобразовать объект Java в объект JSON (не строку Json)

 import com.fasterxml.jackson.databind.ObjectMapper;
import org.json.simple.parser.JSONParser;
            
JSONObject jsonObject = (JSONObject) JSONValue.parse(new ObjectMapper().writeValueAsString(JavaObject));
  

Комментарии:

1. Значение JSON принадлежит какому пакету?

2. Это должно быть: JSONObject jsonObject = new JSONObject(new ObjectMapper().writeValueAsString(JavaObject));

Ответ №5:

Как получить JsonElement из Object:

 import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.*;    

final ObjectMapper objectMapper = new ObjectMapper();
final Gson gson = new Gson();
String json = objectMapper.writeValueAsString(source);
JsonElement result = gson.fromJson(json, JsonElement.class);