jsonschema2pojo 生成的 POJO 有 Android Studio 无法理解的注解

Posted

技术标签:

【中文标题】jsonschema2pojo 生成的 POJO 有 Android Studio 无法理解的注解【英文标题】:POJOs generated by jsonschema2pojo have annotation which Android Studio doesn't understand 【发布时间】:2016-08-31 00:11:58 【问题描述】:

当我通过http://www.jsonschema2pojo.org/ 生成 POJO 时,我得到如下信息:

import javax.annotation.Generated;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

@Generated("org.jsonschema2pojo")
public class Name 
    //...

但是 android Studio 无法识别javax.annotation.Generated,我必须删除两行代码

import javax.annotation.Generated;

@Generated("org.jsonschema2pojo")

形成每个 POJO,这很痛苦。有没有办法禁止 http://www.jsonschema2pojo.org/ 添加该注释?

【问题讨论】:

您是否在 Grandle 中添加了依赖项?如果您还没有这样做,您可能想要添加javax.annotation:jsr250-api:1.0。检查`this 我发现了类似的***.com/questions/9650808/… 和github.com/codepath/android_guides/wiki/…。 那么,您的问题解决了吗? 让我们在下一个版本中删除它:github.com/joelittlejohn/jsonschema2pojo/issues/577 【参考方案1】:

如果您使用的是 Gradle,请转到“app/”文件夹中的 build.gradle 文件,并在依赖项 ... 中添加:

compile 'org.glassfish:javax.annotation:10.0-b28'

然后重建项目。那应该可以解决它。

【讨论】:

【参考方案2】:

您可以随时要求 Gradle 在编译前删除多余的行(自动为您):

task cleanupPojo 
    def trim = [
        '.*org.jsonschema2pojo.*',
        'import javax.annotation.Generated;'
    ]

    for(def text: trim) 
        ant.replaceregexp(match: text, replace: '', flags: 's', byline: true) 
            fileset(dir: 'src', includes: '**/*.java')
        
    

以上脚本使用 Ant 的任务 replaceregexp 从 trim 数组中删除所有出现的文本。

Chapeau bas 持续集成! :-)

【讨论】:

我这样做了,效果很好,你节省了我的时间

以上是关于jsonschema2pojo 生成的 POJO 有 Android Studio 无法理解的注解的主要内容,如果未能解决你的问题,请参考以下文章

JsonSchema2Pojo,出生日期使用类型编号生成,我正在尝试以整数形式传递值

jsonschema2pojo 使用

jsonschema2pojo maven插件不会生成Java类

错误:警告:忽略匿名内部类的 InnerClasses 属性错误:(org.jsonschema2pojo.gradle。)

插件 jsonschema2pojo:属性按要求显示,但它们应该是可选的

将 JSON 模式转换为 python 类