Giter VIP home page Giter VIP logo

pojo2json's Introduction

Platform&Tools






Console&Game

pojo2json's People

Contributors

organics2016 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

pojo2json's Issues

Backreferences not supported

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!

Record classes throw error "Can't find class scope"

Hello,
first I want to thank you very much for that great plugin, that saves alot of time.

I might found a bug using the plugin with Java record classes. Classes that uses the new record keyword fail to create JSON body. IntelliJ shows the following error message: Can't find class scope

image

Unable to handle JsonNode

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?

JsonProperties without value generate empty keys in json.

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变量不知道可不可以动态识别,如果可以,那应该也可以过滤掉,这样体验就更好了。

目前我每次都是自己手动删除,比较麻烦,强烈建议改进!!!

可否不直接进入某个类文件,用于支持泛型

    @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<>();
    }

Add java.util.UUID support

Pls, add java.util.UUID support
image

Good solution:

{
  "matchUuid": "da99afcb-909c-468d-8e14-a1608b75816e"
}

1.2.6版本 copy json and random values 时报了NPE

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)

【@Builder + instance】This class reference level exceeds maximum limit or has nested references!

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
或者选中之后再右键,省去进入到类里那一步

Support for member class

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属性吧,每次都要手动去删,太麻烦了。 不知道楼主能不能改善一下!

Map, MultiValuedMap converts to empty section

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.

Generic is not supported

@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": [
      {}
    ]
  }
}

StackOverflow on Idea 2022.2

	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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.