Java-Gson不使用动态定义的对象

Java-Gson不使用动态定义的对象,java,json,gson,Java,Json,Gson,我不想为了进行json转换而定义额外的类型。我使用的库需要一个对象作为输入,然后对该数据执行http操作,因此我不能使用硬编码的json字符串作为输入 private static final Gson GSON = new Gson(); public static void main(String[] args) { System.out.println(GSON.toJson(new Object() { private String email_address = "me@

我不想为了进行json转换而定义额外的类型。我使用的库需要一个对象作为输入,然后对该数据执行http操作,因此我不能使用硬编码的json字符串作为输入

private static final Gson GSON = new Gson();

public static void main(String[] args) {
  System.out.println(GSON.toJson(new Object() {
    private String email_address = "me@mail.eu";
    public String getEmail_address() {return "me@mail.eu"; }
    public void setEmail_address(String mail) {email_address = mail; }
  }));    
}

我试图删除getter和setter,或者离开getter并删除字段,但不起作用。有人知道如何解决这个问题吗?

为什么不定义一个额外的类型?我们不是在80年代。我会亲自使用DTO


但也许您的问题的答案就在这里:

为什么不定义一个额外的类型?我们不是在80年代。我会亲自使用DTO



但您的问题的答案可能就在这里:

用于Json序列化/反序列化(如Gson)的库,请相信您已经定义了自定义对象,您将在其上映射Json字符串。这是因为它们使用类上的反射将字段与json中相应的键映射。没有它,他们很难实现任何(可用的)目标

用于Json序列化/反序列化(如Gson)的库依赖于这样一个事实,即您已经定义了自定义对象,您将在其上映射Json字符串。这是因为它们使用类上的反射将字段与json中相应的键映射。没有它,他们很难实现任何(可用的)目标

在哪里声明了
GSON
?@mceponder fixed为什么要使用
protected static final GSON GSON=new com.google.GSON.GsonBuilder().create()
而不仅仅是
受保护的静态最终Gson Gson=new Gson()?不确定它是否会改变什么——只是好奇。@AlexanderJansing是的,我也很好奇:)也许它有一些参数,它们被删除了。fixed.Ad-hoc匿名对象序列化在Gson中被禁止。有关正式文档,请参阅。您将获得
null
,因为已排除匿名对象:。因此,接受的答案只是误导。声明的
GSON
在哪里?@mceponder fixed为什么要使用
protected static final GSON GSON=new com.google.GSON.GsonBuilder().create()
而不仅仅是
受保护的静态最终Gson Gson=new Gson()?不确定它是否会改变什么——只是好奇。@AlexanderJansing是的,我也很好奇:)也许它有一些参数,它们被删除了。fixed.Ad-hoc匿名对象序列化在Gson中被禁止。有关正式文档,请参阅。您将获得
null
,因为已排除匿名对象:。因此,公认的答案只是误导。如何解释?官方文档:与内部类、匿名类和本地类中的外部类相对应的字段被忽略,不包括在序列化或反序列化中。匿名类可以很容易地使用反射进行内省。我不理解你的问题,你能用不同的方式陈述它吗?你的答案只是没有说明OP提出问题的真正原因或解释。我已经多次阅读了你的答案,但我不知道它是如何回答的。OP正在创建一个匿名类对象,Gson也可以在其上使用反射,但其设计禁止它。对于我来说,如果这些对象是以传出序列化方式使用的,并且从来没有用于反序列化目的,那么临时匿名对象类似乎是一个明智的想法。如何实现?官方文档:与内部类、匿名类和本地类中的外部类相对应的字段被忽略,不包括在序列化或反序列化中。匿名类可以很容易地使用反射进行内省。我不理解你的问题,你能用不同的方式陈述它吗?你的答案只是没有说明OP提出问题的真正原因或解释。我已经多次阅读了你的答案,但我不知道它是如何回答的。OP正在创建一个匿名类对象,Gson也可以在其上使用反射,但其设计禁止它。不过,如果这些对象是以传出序列化方式使用的,并且从未用于反序列化目的,那么对于我来说,即席匿名对象类似乎是一个明智的想法。