Json解析器将空值转换为0

时间:2014-05-23 14:41:40

标签: java json null jsonobject

我正在使用net.sf.json库并使用它来解析我的refMap,如:

Map<String, Group> myMap = new HashMap<String,Group>();
myMap = this.getGroupValues();
JSONObject jsonObj = new JSONObject();
jsonObj.putAll(refMap);
File jsonFile = new File("./TempJson.txt");
FileWriter writer = new FileWriter(jsonFile);
fileWriter.write(jsonObj.toString());

我的Group类定义为:

class Group {
Double val;
Integer num;
Section sectionObj;
//..getters & setters
}

问题 this.getGroupValues()返回一些Group对象,其中 val / num (包装类)值为&#39; null&#39;然后JsonObject解析器将其转换为0,如:"val":0,"num":0

如果sectionObj为null,则解析器将其保持为空"sectionObj":null

如何在json文件中获取包装类对象的空值?

1 个答案:

答案 0 :(得分:0)

我建议使用不同的JSON库。例如,GSON将从序列化的JSON文本中留下null个值。当GSON对其进行反序列化时,这些缺失值将在新对象中设置为null

考虑这个例子:

public class Main {
    public static void main(String[] args) {
        Gson gson = new Gson();
        final String json = gson.toJson(new Group());

        System.out.println(json);

        Group g = gson.fromJson(json, Group.class);
        System.out.println(g);
    }

    public static class Group {
        Double val;
        Integer num;
        Section sectionObj;
       // Getters and setters...

        @Override
        public String toString() {
            return "val: '" + val + "' num: '" + num
                    + "' sectionObj: '" + sectionObj + "'";
        }
    }

    public static class Section {}
}

输出以下内容:

{}
val: 'null' num: 'null' sectionObj: 'null'