Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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
Java 如何在GWT中使用JSNI覆盖类型提取嵌套JSON对象?_Java_Json_Gwt_Jsni - Fatal编程技术网

Java 如何在GWT中使用JSNI覆盖类型提取嵌套JSON对象?

Java 如何在GWT中使用JSNI覆盖类型提取嵌套JSON对象?,java,json,gwt,jsni,Java,Json,Gwt,Jsni,我看到了这个JSON对象,它的格式大致如下: { "student":{"field1":"","field2":"",....}, "subjects":[{},{},....,{}] } 如何使用覆盖类型和JsonUtils方法提取GWT中“student”的全部内容和“subjects”数组中的每个对象?看起来您的student是一个嵌套的Json对象 JSONObject obj = new JSONObject(jsonString

我看到了这个JSON对象,它的格式大致如下:

{   "student":{"field1":"","field2":"",....},
    "subjects":[{},{},....,{}]                     }

如何使用覆盖类型和JsonUtils方法提取GWT中“student”的全部内容和“subjects”数组中的每个对象?

看起来您的student是一个嵌套的Json对象

JSONObject obj = new JSONObject(jsonString);
JSONObject mystudent = obj.getJSONObject("student");
String myfield1 = mystudent.getString("field1");
“主题”看起来像一个数组。。。。为此,可以使用JSONArray和getJavaScriptObject()

最简单的方法是制作一个向Java公开包装器对象的
JavaScriptObject
,其中
student
主题的getter
属性与其他
JavaScriptObject
JsArray
属性相同

final类StudentAndSubjects扩展了JavaScriptObject{
受保护的学生和受试者(){}
公共本机学生getStudent()/*-{返回this.Student;}-*/;
公共本机JsArray getSubjects()/*-{返回this.subjects;}-*/;
}
最后一个类Student扩展了JavaScriptObject{
受保护的学生(){}
公共本机字符串getField1()/*-{返回this.field1;}-*/;
公共本机字符串getField2()/*-{返回this.field2;}-*/;
…
}
最后一个类主题扩展了JavaScriptObject{
受保护的主题(){}
…
}
然后,您可以这样使用它们:

StudentAndSubjects sas=JsonUtils.safeEval(json);
Student=sas.getStudent();
JsArray subjects=sas.getSubjects();
for(int i=0,l=subjects.length();i
谢谢。虽然我很确定这就是我正在做的。但是它给了我一个java.lang.ClassFormatError:类中非法的方法名“$”。。。(即我的学生和受试者的等价物)aaaanndd通过简单的调试解决了这个问题。有些方法未被宣布为最终方法存在问题:(