Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将org.glassfish.json.JsonStringImpl强制转换为javax.json.JsonArray_Java_Json_Glassfish - Fatal编程技术网

无法将org.glassfish.json.JsonStringImpl强制转换为javax.json.JsonArray

无法将org.glassfish.json.JsonStringImpl强制转换为javax.json.JsonArray,java,json,glassfish,Java,Json,Glassfish,我有一段代码: JsonObject fg = null; try{ fg = message.getJson(); //gettng the JSON object from the client System.out.println("JSONGOBJECT IS HERE: "+fg); JsonArray arr1 = fg.getJsonArray("to"); //I get the exception here int

我有一段代码:

JsonObject fg = null;
try{
      fg =  message.getJson();  //gettng the JSON object from the client
      System.out.println("JSONGOBJECT IS HERE:   "+fg);

      JsonArray arr1 =  fg.getJsonArray("to");  //I get the exception here
      int size =  arr1.length();
      arrays = new ArrayList<String>();
      for(Object o : arr1)
      {
        String user=(o == null ? null : o.toString());
           if (user != null) {
                 arrays.add(user);
           }
       }
       catch(Exception e)
       {
           System.out.println("Exeption HERE: "+e);
       }
JsonObject fg=null;
试一试{
fg=message.getJson();//从客户端获取JSON对象
System.out.println(“JSONGOBJECT在这里:”+fg);
JsonArray arr1=fg.getJsonArray(“to”);//我在这里得到了异常
int size=arr1.length();
arrays=新的ArrayList();
用于(对象o:arr1)
{
字符串user=(o==null?null:o.toString());
如果(用户!=null){
添加(用户);
}
}
捕获(例外e)
{
System.out.println(“此处的Exeption:+e”);
}
当我试图从
JsonArray
访问“to”参数的值时,出现了此异常。我没有在任何地方使用
org.glassfish.json
库。我也没有导入它


我在当前代码中只导入了
javax.json
。如何解决此问题?

不确定从客户端获取的消息对象的数据结构,以确定“to”对象是数组还是字符串。您可以在此处提供更多信息。异常可能是由于“to”的键被映射到JsonString(例如{to:“thisthat”},而不是数组(例如{to:[“this”,that”]})。如果是这种情况,则尝试将JsonString强制转换到JsonArray失败,因此出现异常。这里可能没有显示,但需要检查消息的结构,尤其是“to”字段

关于org.glassfish.json,很可能是由于您的运行时环境使用了glassfish json实现(默认情况下)。这可能包括在jar文件中(类加载)。json包(javax.json)您在代码中导入的只是一个接口。它将允许您编译代码。要运行代码,您将需要一个java包实现(jar)(任何相关的)来实现javax.json接口)。您可以显式配置运行时环境以使用特定的json实现包,或者您的环境可能具有javax.json的默认配置


希望这能有所帮助。

正如young chisango提到的,您可能没有包含json api 实施

如果希望使用JSON处理API运行应用程序,请在maven项目中声明对JSON API实现的依赖关系

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.0.4</version>
</dependency>

玻璃鱼
javax.json
1.0.4

问题不是因为缺少导入,因为这不会导致触发glassfish。如上所述,glassfish实现是从javax.json调用的,这不是问题

这个问题是由于JsonObject中没有要转换为JsonArray的数组造成的

一个可能的例子是,在javascript中,数组可能被声明为ArrayBuffer,而不是数组


进入javascript以确保有一个数组,然后打印出JsonObject以查看其中的内容以解决问题。

发生错误的原因是您试图将
number
转换为
string

这肯定会奏效

for (int i = 0; i < jsonArray.size(); i++) 
jsonArray.getJsonObject(i).get(key).toString();
for(int i=0;i

以通用方式获取对象。

我通过将代码更改为使用
getBoolean
而不是
getJsonArray
解决了类似的问题。
因此,我建议您尝试不同的数据类型,直到找到一种有效的数据类型。

Hi@simar您能进一步解释这个问题吗..还要检查org.json.JsonObject是否是您要导入的..@viraj:我甚至没有导入它。我已经严格遵守javax.json的所有规定,并进行了多次交叉检查。好的..那么有一种可能性我可以我猜,“to”是json对象的一个键,我们正试图将其作为JSONARRAY来获取。您能更新一下您在JSONGOBJECT上获得的信息吗:以便我们能够验证这种可能性。