我很努力地将一些现有的代码段与通过JSON负载接受输入的服务器集成在一起。我交给了一个JSON对象,并且我需要构造一个表示键值对的Map,其中值采用合理的预期类型。 org.json解析器似乎适用于除JSONArray之外的所有情况。将JSONArray转换为适当类型的Java数组
我可以看到,从JSONArray构建一个String []是很容易的...只要您知道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
,它似乎没有以任何方式连接到从列表元素获得的未知类型。
而这对于int[]
和double[]
的情况当然根本不做任何事情。整数[]和双[]可能是可以接受的折中。
作为临时解决方案,我已经能够将JSONArray呈现为Object [],然后更改与这些数组交互的服务器端代码以根据需要投射它们,但它很丑陋,而且它允许一些JSON-yuck渗入我们的代码库。
是否有任何库或巧妙的技巧用于在Java中创建未知类型的数组?有一个JSON约定,我可以要求使用它会告诉我什么类型是预期的?
这是家庭作业或生产? – durron597 2013-05-02 18:25:11
生产。属于科学类。 – AbGator 2013-05-02 18:28:09
是的,我想,我不知道你是否有一个编写Json解释器的项目,或者你是否需要这个功能。查看我的回答 – durron597 2013-05-02 18:28:57