organics2016 / pojo2json Goto Github PK
View Code? Open in Web Editor NEWA simple plugin for converting POJO to JSON in IntelliJ IDEA
License: MIT License
A simple plugin for converting POJO to JSON in IntelliJ IDEA
License: MIT License
It has some issues with processing backreferences. In real use cases, it is a common situation to have a reference to the parent entity.
This class reference level exceeds maximum limit or has nested references!
I really like the HTTP Client plugin works on text-based.
Reducing unnecessary GUI makes work ez and more traceable.
This issues synchronized some information about the integration. If success ( ; ; )
Plugin seems not to handle classes that includes JsonNode field. Stack overflow occurs.
public class Asd {
private JsonNode asd;
}
Is it possible just to generate empty brackets?
If you have a Class e.g. 👍
public class TransferAccount {
@JsonProperty
private String type;
@JsonProperty("institution_name")
private String institutionName;
}
It will generate the following json:
"transfer_account": {
"": "",
"institution_name": ""}
Is it possible to fallback to the field name as declared in the java class when jsonproperty is present but no value is defined.
感谢你们的贡献,这个项目对我的帮助非常大,现在有一个功能请求:
对于字符串类型的随机值目前生成的都是同一个值,期望根据字段名的不同产生不同的值。比如:
xxxName 生成 Tom Jerry 张三 李四
xxxUrl 生成 http://demo.com
xxxAddress 生成 China USA
其实插件做的挺好的,一直也在使用,很方便,感谢作者!
不过有一个个人感觉比较低级,也很容易可以改进的地方,那就是:
在javabean转JSON的时候,为啥把serialVersionUID、日志框架的log变量这种 final statis 的全局变量也转成JSON属性?没必要吧
我觉得可以过滤一下类似这种的变量,起码serialVersionUID是完全可以过滤的,日志框架的log变量不知道可不可以动态识别,如果可以,那应该也可以过滤掉,这样体验就更好了。
目前我每次都是自己手动删除,比较麻烦,强烈建议改进!!!
BigDecimal should give 1.01 like this, but it is responding like 0
in the same way for Double also
@Data
public static class Result<T> {
private Integer code;
private T data;
}
@Data
public static class Example {
private Integer id;
private String name;
}
@Test
void contextLoads() {
// 可以直接在这里点击 Result 进行生成吗?
Result<Example> result = new Result<>();
// 类似的还有
List<Example> list = new ArrayList<>();
}
我有一个pojo,他继承了父类jar包中的class,但是生成出来的json没有父类class的字段
java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:209)
at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:180)
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at ink.organics.pojo2json.parser.POJO2JSONParser.getPsiClassGenerics(POJO2JSONParser.java:238)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:226)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValue(POJO2JSONParser.java:149)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseField(POJO2JSONParser.java:121)
at ink.organics.pojo2json.parser.POJO2JSONParser.lambda$parseClass$0(POJO2JSONParser.java:81)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseClass(POJO2JSONParser.java:83)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:226)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:212)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValue(POJO2JSONParser.java:149)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseField(POJO2JSONParser.java:121)
at ink.organics.pojo2json.parser.POJO2JSONParser.lambda$parseClass$0(POJO2JSONParser.java:81)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseClass(POJO2JSONParser.java:83)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:226)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValue(POJO2JSONParser.java:149)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseField(POJO2JSONParser.java:121)
at ink.organics.pojo2json.parser.POJO2JSONParser.lambda$parseClass$0(POJO2JSONParser.java:81)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseClass(POJO2JSONParser.java:83)
at ink.organics.pojo2json.parser.POJO2JSONParser.uElementToJSONString(POJO2JSONParser.java:69)
at ink.organics.pojo2json.POJO2JSONAction.pojo2jsonAction(POJO2JSONAction.java:61)
at ink.organics.pojo2json.EditorPopupMenuAction.actionPerformed(EditorPopupMenuAction.java:37)
at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.java:339)
at com.intellij.openapi.actionSystem.ex.ActionUtil.lambda$performActionDumbAwareWithCallbacks$4(ActionUtil.java:313)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:362)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:313)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$performAction$5(ActionMenuItem.java:300)
at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:226)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.performAction(ActionMenuItem.java:293)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$new$0(ActionMenuItem.java:68)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$4(ActionMenuItem.java:115)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:115)
at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:526)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:558)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6657)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3385)
at java.desktop/java.awt.Component.processEvent(Component.java:6422)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4954)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4581)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4522)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2808)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:791)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:740)
at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:734)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:764)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:762)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:685)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:633)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:588)
at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368)
at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:992)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:992)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Everytime the functionality is accessed via the context menu, the resulting Json String's properties should be filled with sample data.
That might be done with a library like JavaFaker (https://www.baeldung.com/java-faker) or so.
As the title says.
I have a case use lombok @Builder
and static instance, then show this error.
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StudentDto {
public static final StudentDto instance = StudentDto.builder().name("jack").build();
private String name;
}
This simple case also report.
public class StudentDto {
private static final StudentDto instance = new StudentDto();
private String name;
}
现在使用方法是需要进到类中,然后点击右键
希望能在类使用处或者变量使用处 右键也能生成json
比如List 右键DemoBean也可生成json
或者选中之后再右键,省去进入到类里那一步
Hi team. I have problem with nested class in side another class. Plugin always generate the parent class not the child class. Any chance for support like that?
我觉得插件做的挺好,用起来很方便!给作者点赞!!!
但是有个低级的不好的体验可以改进一下:
javabean转json的时候,过滤一下serialVersionUID、log4j的log全局实例变量。
这两个东西一般没人会需要转成json属性吧,每次都要手动去删,太麻烦了。 不知道楼主能不能改善一下!
Using the following fieldName to populate the map, we can create actual json representation of the POJO class
String fieldName = field.getAnnotation(com.fasterxml.jackson.annotation.JsonProperty.class).value();
Language: Java
Use either java.util.Map or org.apache.commons.collections4.MultiValuedMap (or most probably other Map implementations), and the generated result JSON will contain just an empty {} section for the map attribute.
getting This class reference level exceeds maximum limit or has nested references!
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PayRestoreDetailResp {
private String responseCode;
private String responseMsg;
private PageData<PayRestoreDetailBo> data;
}
The following example is result of pojo to json ,and pageData
is empty {}
{
"responseCode": "",
"responseMsg": "",
"data": {
"total": 0,
"pageSize": 0,
"curPage": 0,
"pageData": [
{}
]
}
}
Hi there. Really awesome plugin man. It will be really great feature to have variable with maximum string length for generating random values. Best wishes.
比如 class 为 public class Test {
private String name
private String age
}
输出的 json 为 {"code": 200, "data":{"name":"1", "age":10, "message":"ok"}}
比如:
/**
* comment
*/
private String XXX;
=>
{
"XXX": "" // comment
}
Postman支持该特定的带注释的json格式。
at com.intellij.psi.impl.compiled.ClsElementImpl.isValid(ClsElementImpl.java:57)
at com.intellij.psi.impl.compiled.ClsElementImpl.isValid(ClsElementImpl.java:58)
at com.intellij.psi.impl.compiled.ClsElementImpl.isValid(ClsElementImpl.java:58)
at com.intellij.psi.impl.compiled.ClsElementImpl.isValid(ClsElementImpl.java:58)
at com.intellij.psi.impl.compiled.ClsElementImpl.isValid(ClsElementImpl.java:58)
at com.intellij.psi.impl.compiled.ClsElementImpl.isValid(ClsElementImpl.java:58)
at com.intellij.psi.impl.source.PsiClassReferenceType.isValid(PsiClassReferenceType.java:59)
at com.intellij.psi.impl.TypeCorrector$PsiCorrectedClassType.isValid(TypeCorrector.java:236)
at com.intellij.psi.util.PsiUtil.ensureValidType(PsiUtil.java:1275)
at com.intellij.psi.util.PsiUtil.ensureValidType(PsiUtil.java:1256)
at com.intellij.psi.EmptySubstitutor.put(EmptySubstitutor.java:53)
at com.intellij.psi.impl.JavaClassSupersImpl.composeSubstitutors(JavaClassSupersImpl.java:132)
at com.intellij.psi.impl.JavaClassSupersImpl.getSuperSubstitutorWithCaching(JavaClassSupersImpl.java:99)
at com.intellij.psi.impl.JavaClassSupersImpl.getSuperClassSubstitutor(JavaClassSupersImpl.java:55)
at com.intellij.psi.util.TypeConversionUtil.getMaybeSuperClassSubstitutor(TypeConversionUtil.java:1234)
at com.intellij.psi.util.TypeConversionUtil.getSuperClassSubstitutor(TypeConversionUtil.java:1220)
at com.intellij.psi.util.PsiUtil.substituteType(PsiUtil.java:1180)
at com.intellij.psi.util.PsiUtil.substituteTypeParameter(PsiUtil.java:1153)
at com.intellij.psi.util.PsiUtil.extractIterableTypeParameter(PsiUtil.java:1139)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:200)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:201)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:201)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:201)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:201)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:201)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:201)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:201)
at ink.organics.pojo2json.parser.POJO2JSONParser.parseFieldValueType(POJO2JSONParser.java:201)
Can't Provide the POJO
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.