试图将一个数组放入JSONObject

时间:2018-04-17 13:41:36

标签: android json serialization

我正在尝试将Java类转换为JSONObject,它可以工作,但有一点问题。当我将一个arraylist对象放入一个JSONObject时,它将它保存在引号中。

这对我来说是一个问题,因为当我尝试进行反序列化时,它会检测到它是一个字符串而不是一个数组。

这是我从json api收到数据的类:

public class IndicadorEconomico {
    @SerializedName("version")
    private String version;
    @SerializedName("autor")
    private String autor;
    @SerializedName("codigo")
    private String codigo;
    @SerializedName("nombre")
    private String nombre;
    @SerializedName("unidad_medida")
    private String unidad_medida;
    @SerializedName("serie")
    private ArrayList<Object> serie;

    private static final String JSON_VERSION = "version";
    private static final String JSON_AUTOR = "autor";
    private static final String JSON_CODIGO = "codigo";
    private static final String JSON_NOMBRE = "nombre";
    private static final String JSON_UNIDAD_MEDIDA = "unidad_medida";
    private static final String JSON_SERIE = "serie";

    public JSONObject convertToJSON() throws JSONException {
        JSONObject jo = new JSONObject();

        jo.put(JSON_VERSION, version);
        jo.put(JSON_AUTOR, autor);
        jo.put(JSON_CODIGO, codigo);
        jo.put(JSON_NOMBRE, nombre);
        jo.put(JSON_UNIDAD_MEDIDA, unidad_medida);
        jo.put(JSON_SERIE, serie);

        Log.e("info", "" + jo.toString());

        return jo;
    }
}

这是我进行序列化过程的JSONSerializer类:

public class JSONSerializer 

{

    private static final String TAG = JSONSerializer.class.getSimpleName();

    private String mFilename;
    private Context mContext;

    public JSONSerializer(String fn, Context con) {
        this.mFilename = fn;
        this.mContext = con;
    }

    public void save(IndicadorEconomico indicadorEconomico) throws IOException, JSONException {
        Writer writer = null;
        try {
            OutputStream out = mContext.openFileOutput(mFilename, mContext.MODE_PRIVATE);
            writer = new OutputStreamWriter(out);
            writer.write(indicadorEconomico.convertToJSON().toString());
        } finally {
            if (writer != null) {
                writer.close();
            }
        }
    }
}

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以尝试Gson库轻松完成相同的操作

答案 1 :(得分:0)

看看这个tutorial,看看ObjectMapper是否可以帮助你。我还在教自己杰克逊,所以我可能错了,但似乎它可能会给你一个前进的方向。