gpt4 book ai didi

java - org.json.JSONException : JSONObject ["alias"] not a string

转载 作者:行者123 更新时间:2023-12-01 18:36:39 24 4
gpt4 key购买 nike

我正在尝试从 json 文件中获取别名字符串。但我收到异常,提示别名不是字符串。 org.json.JSONException:JSONObject[“alias”]不是字符串。

String qsCurrentLine;
try {
brq = new BufferedReader(new FileReader("/home/storm/Videos/2.json"));
try {
while ((qsCurrentLine = brq.readLine()) != null) {
//System.out.println(qsCurrentLine);
//reads the line makes it json object
JSONObject question=new JSONObject(qsCurrentLine);
//System.out.println(question);
JSONArray usersarray=question.getJSONArray("users");
//System.out.println(usersarray);
for(int i=0;i<usersarray.length();i++){
JSONObject questions=usersarray.getJSONObject(i);
//System.out.println(questions);
int qus=questions.getInt("id");
//System.out.println(qus);
//String alias=questions.getString("alias");
//String check=questions.getString("answer");
//System.out.println(check);
String check1=questions.getString("question");
//System.out.println(check1);
String check2=questions.getString("_subtype");
//System.out.println(check2);
String check3=questions.getString("_type");
//System.out.println(check3);
String check4=questions.getString("options");
//System.out.println(check4);

System.out.println("HELLO "+questions.getString("alias"));

// System.out.println(check5);

int check6=questions.getInt("id");
System.out.println(check6);

//System.out.println("This alias " +aliass);

}
//JSONObject data25=array.getJSONObject(25);
//System.out.println(data25);
//question1060=data25.getString("question_36__option_10160_");
//System.out.println("the question number of 1060: "+question1060);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

我正在获取所有其他字符串值,但是当我尝试获取别名字符串时,我收到了异常,我不明白为什么?

这是我的 json 文件的示例。

{"answer":null,"question":"<h1 style=font-family:Lato, sans-serif;font-weight:600;font-size:28px;>   Your response to our survey will help us identify how we are serving the needs of different companies.<\/span><\/span>","_subtype":"instructions","_type":"SurveyDecorative","options":"[]","alias":null,"id":73}

即使别名为 NULL,它也应该得到空字符串,你们中的任何人都可以解释一下为什么会这样。

提前致谢

最佳答案

问题是什么

org.json.JSONObject#getString(String) 如果键的属性存在,但为 null,则抛出 JSONException。

为什么会发生

查看代码http://grepcode.com/file/repo1.maven.org/maven2/org.json/json/20080701/org/json/JSONObject.java

public String getString(String key) throws JSONException {
return get(key).toString();
}

get 在哪里

 public Object get(String key) throws JSONException {
Object o = opt(key);
if (o == null) {
throw new JSONException("JSONObject[" + quote(key) +
"] not found.");
}
return o;
}

它只是以这种方式实现的,它会在 null 上抛出异常。 JSON 规范允许 null,所以这只是一个怪癖。请参阅http://www.json.org/

如何处理这个

对于可选值,此包提供了方法 opt(String) 和例如optString(String)optString(String, String),请参阅 http://www.docjar.com/docs/api/org/json/JSONObject.html

我可能会使用

... = questions.optString("alias"); //if you want `""` as null value

... = questions.optString("alias", null); //if you want null

请有效记住,您需要使用 getString 和类似的 API 来获取必需的值,并使用 optString 和类似的 API 来获取可选值。

关于java - org.json.JSONException : JSONObject ["alias"] not a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35721402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com