java - 从 JSON 对象实例化一个类

标签 java json

我有一个 NodeJS WebSocket 服务器,需要在其中创建一个 Java 客户端应用程序,但是我过去没有在 Java 中使用过 JSON,并且在理解如何为该服务器创建类实例时遇到了一些问题。根据type正确的数据包Json 对象中的值。

为了让您有更多的了解,我们有 Packet抽象类,然后是子类,例如 AuthenticationPacket 。我们有一个Map<>存储类,Map<String, Class>因此,示例条目为 ("Authentication success", AuthenticationPacket.class)

这是我们从服务器返回的 JSON 数据的示例。

{
    "type": "Authentication success",
    "data": 
    {
        "username": "Hobbyist",
        "accountStatus": "USER"
    }
}

所以我的问题是如何从 data 中的变量创建一个新类JSON 响应的字段,而无需根据带有 new AuthenticationPacket(...) 的类型一次传入每个参数

有没有办法在 JSON 和类之间进行某种链接,它只是使用 data 中存在的所有变量创建该类的新实例。 ?

谢谢

最佳答案

希望我没有误解你的意思。

如果你可以将json字符串转换为JSONObject(我使用的是vert.x JsonObject)

PacketSErvice 处理所有请求

 public class PacketService {

    private static PacketService instance; 

        private PacketService(){}
        public static PacketService newInstance(){

            if(instance == null) {
                instance = new PacketService();
            }
            return instance; 
        }

        public <T extends Packet> T handlePacket(Class<T> clazz, JSONObject data){
            return (T) clazz.newInstance().fromJson(data);
        }

      }

数据包接口(interface)

 public interface Packet {  

            Packet fromJson(JSONObject object); 

            JSONObject asJson();

        }

如果您有类 XPacket 、 YPacket 、 ZPacket ,请实现您的请求

Xpacket packet = PacketService.newInstance().handlePacket(XPacket.class,jsonData);

关于java - 从 JSON 对象实例化一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46460317/

相关文章:

java - 如何确定我的类使用了多少内存?

java - 返回与原始对象相同的对象的副本

java - Java中的HashMap.values()方法返回的集合是什么?

java - Firebase 检索时无法弹回输入

json - 新的@angular/cli 版本中的文件 angular-cli.json 在哪里?

javascript - Chart.js - 正确使用对象数组

java - Jackson 反序列化 - 空对象引用上的 JsonMappingException

java - 无法对非静态类型 E 进行静态引用

Java:用MulticastSocket接收时判断接收地址

javascript - 通过变量 .-string 插值访问 JSON 数据