将JSONArray转换为适当类型的Java数组



我正在努力将一些现有的代码片段与通过JSON有效负载接受输入的服务器集成。我得到一个JSON对象,需要构造一个表示键值对的Map,其中的值采用合理的预期类型。org。json解析器似乎适合所有情况,除了JSONArrays。

我可以看到,这是很容易建立一个字符串[]从JSONArray…只要你知道String[]是你所需要的。然而,我也有双精度数组,整型数组,没有什么可以区分它们。我需要找出类型,并创建一个适当类型的数组。

我试过从数组中取出第一个元素并获得其类型,希望创建该类型的数组实例,如下所示:

private Object[] decodeToArray(JSONArray list) throws JSONException { 
    if (list.length() > 0) {
        Class<? extends Object> type = list.get(0).getClass();
        type[] result = Array.newInstance(type, list.length());
    }

当然,这不会编译——type是一个实例,而不是一个类;它不接受?作为类型;如果我试图给它一个名字,比如<T extends Object>,它要求在方法签名中声明T,这似乎与从列表元素获得的未知类型没有任何联系。

当然,这对int[]double[]的情况没有任何作用。整数[]和双精度[]可能是可以接受的妥协。

作为一种临时解决方案,我已经能够将JSONArray呈现为Object[],然后根据需要更改与这些数组交互的服务器端代码来转换它们,但这很难看,并且它允许一些JSON-yuck渗入我们的代码库。

在Java中是否有创建未知类型数组的库或聪明的技巧?我是否可以要求使用JSON约定来告诉我期望使用什么类型?

假设这是针对现实世界而不是家庭作业,只需使用Gson,这是一个您正在寻找的库。

同时,仔细阅读这个帖子:https://stackoverflow.com/questions/338586/a-better-java-json-library?rq=1

相关内容

  • 没有找到相关文章

最新更新