<blockquote>
<p>So is there any way to generate simple "Pojo" Python classes from Java code? </p>
</blockquote>
<p>我试过了,下面是解决方法:</p>
<p>考虑到以下简化<code>Pojo.java</code></p>
<pre><code>public class Pojo {
private String string = "default";
public int integer = 1;
public String getString(){
return string;
}
}
</code></pre>
<p>解决方案需要3个阶段</p>
<h3>1。Java Pojo到JSON模式</h3>
<p>我可以找到以下选项:</p>
<ol>
<li><a href="https://github.com/FasterXML/jackson-module-jsonSchema" rel="noreferrer">FasterXML/jackson-module-jsonSchema</a>:
这是库,下面的库也在内部使用。在</li>
<li><a href="https://github.com/mbknor/mbknor-jackson-jsonSchema" rel="noreferrer">mbknor/mbknor-jackson-jsonSchema</a>:上面正式引用,支持json模式的v4。在</li>
<li><a href="https://github.com/reinert/JJSchema" rel="noreferrer">reinert/JJSchema</a></li>
</ol>
<p>下面是带有选项<code>1</code>的相关代码(也可以浏览网站):</p>
^{pr2}$
<p>下面的输出是json架构字符串:</p>
<pre><code>{"type":"object","id":"urn:jsonschema:Pojo","properties":{"string":{"type":"string"},"integer":{"type":"integer"}}}
</code></pre>
<h3>2。JSON架构后期处理</h3>
<p>之所以需要这个阶段,主要是因为我发现对于简单的用例(至少),下面的步骤<code>3</code>需要一个强制具有<code>definitions</code>属性的json模式。我想这是因为不断发展的模式定义@<a href="http://json-schema.org/" rel="noreferrer">http://json-schema.org/</a>。另外,我们可以包含一个<code>title</code>属性来指定下一步将生成的python类的名称。在</p>
<p>我们可以在上面步骤<code>1</code>的java程序中轻松地完成这些步骤。我们需要以下格式的json架构字符串:</p>
<pre><code>{"definitions": {}, "title": "Pojo", "type":"object","id":"urn:jsonschema:Pojo","properties":{"string":{"type":"string"},"integer":{"type":"integer"}}}
</code></pre>
<p>注意,只有加法是<code>"definitions": {}, "title": "Pojo"</code></p>
<h3>3。Python类的Json模式</h3>
<p><a href="https://github.com/frx08/jsonschema2popo" rel="noreferrer">frx08/jsonschema2popo</a>这项工作做得很好。在</p>
<pre><code>pip install jsonschema2popo
jsonschema2popo -o /path/to/output_file.py /path/to/json_schema.json
</code></pre>
<h3>还有一些要点</h3>
<ol>
<li>javajson模式生成器将只在输出中包含那些公共的或具有公共getter的属性。在</li>
<li>我假设对于大规模迁移来说,注释Java类是一件痛苦的事情。否则,如果这对您来说是可行的,那么上面所有的java库都提供了丰富的注释,您可以在其中指定属性是否是必需的,等等。在</li>
</ol>