只有选定字段的Java对象到JSON

时间:2015-05-25 14:46:19

标签: java json web-services rest

我有像java这样的类:

public class Sample{
 int foo=5;
 int bar=6;
}

现在我想生成JSON对象,但没有bar字段:

{"foo":5}

实现这一目标的最佳方法是什么? 我应该手动编写JSON字符串,还是可以使用某些库或生成器?

3 个答案:

答案 0 :(得分:2)

  

我应该手动编写JSON字符串

避免这种情况,通过这种方式制作无效的json很容易。使用库可确保正确转义可能会破坏输出的字符。

Gson忽略transient个字段:

public class Sample {
   private int foo = 5;
   private int transient bar = 6;
}

Gson gson = new Gson();

或者您可以选择要包含Expose属性的内容:

public class Sample {
   @Expose private int foo = 5;
   private int bar = 6;
}

Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

然后无论采用哪种方法,都要这样做:

String json = gson.toJson(obj);

获得所需的{"foo":5}

答案 1 :(得分:0)

您可以使用杰克逊来解决您的问题。请按照以下步骤进行操作 -

第1步 - 制作一个将Java对象转换为Json的方法

public class JsonUtils {
    public static String javaToJson(Object o) {
            String jsonString = null;
            try {
                ObjectMapper objectMapper = new ObjectMapper();
                objectMapper.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE,true);  
                jsonString = objectMapper.writeValueAsString(o);

            } catch (JsonGenerationException e) {
                logger.error(e);
            } catch (JsonMappingException e) {
                logger.error(e);
            } catch (IOException e) {
                logger.error(e);
            }
            return jsonString;
        }

}

第2步模型类

package com.javamad.model;

import org.codehaus.jackson.annotate.JsonIgnore;



public class Sample{
     int foo=5;
     public int getFoo() {
        return foo;
    }
    public void setFoo(int foo) {
        this.foo = foo;
    }
    @JsonIgnore
    public int getBar() {
        return bar;
    }
    public void setBar(int bar) {
        this.bar = bar;
    }
    int bar=6;
    }

第3步将您的java类转换为json

Sample sample = new Sample()
JsonUtils.javaToJson(sample);

答案 2 :(得分:-1)

您可以尝试使用Gson,JSON库将对象转换为/从json。

这两种方法很有帮助:

toJson() - 将Java对象转换为JSON格式

fromJson() - 将JSON转换为Java对象

Gson gson = new Gson();
// convert java object to JSON format,
// and returned as JSON formatted string
String json = gson.toJson(obj);