Java - javax.json - Compile Error: "cannot find symbol" for .getValueType() - Can't seem to figure out why
Java - javax.json - Compile Error: "cannot find symbol" for .getValueType() - Can't seem to figure out why
我有一个数据库,通过我的代码,我将我的数据库放入 Json 数组并开始遍历 Json 数组,(仅查找 Json 对象)。从那里,我相信我有这个设置,所以我可以遍历每个 JsonObject 的属性。但是,每个 Json 对象包含 Json 字符串和 Json 数组。现在,我正在试验,所以我尝试为数组创建一个手动异常,基本上我尝试设置它的方式是,如果您正在处理 Json 字符串,则只做您的工作。
import javax.json.Json;
import javax.json.JsonReader;
import javax.json.JsonStructure;
import javax.json.JsonObject;
import javax.json.JsonArray;
import javax.json.JsonValue;
import java.util.Iterator;
import java.util.Collection;
import java.io.FileReader;
import java.io.IOException;
public class DataTest
{
public static void main(String[]args) throws IOException
{
String strValue = "";
JsonReader reader = Json.createReader(new FileReader("Elements.JSON"));
JsonObject jsonst = reader.readObject();
JsonArray elements = jsonst.getJsonArray("Elements");
for (int i = 0; i < elements.size(); i++)
{
JsonObject element = elements.getJsonObject(i);
Collection<String> elementValues = element.keySet();
Iterator<String> elementKeys = elementValues.iterator();
while(elementKeys.hasNext())
{
//Error is over here!!!
if(elementKeys.next().getValueType().equals(JsonValue.ValueType.STRING))
{
String elementKey = (String)elementKeys.next();
strValue = element.getString(elementKey);
System.out.println(strValue);
}
}
}
reader.close();
}
}
我相信我有正确的导入,但是当我尝试编译它时,编译器在 .getValueType() 方法中给了我 "cannot find symbol"。 (我在我的代码中留下了一条说明 "Error is over here!!!" 的评论,带有此方法的行就在该评论的正下方)
我也检查了比较的格式,以下是复制粘贴自:http://www.programcreek.com/java-api-examples/index.php?api=javax.json.JsonString
如果 ((results.getValueType().等于(JsonValue.ValueType.STRING))
这是我的数据库的一小部分:
{
"Elements" : [
{
"name" : "Hydrogen",
"Symbol" : "H",
"atomicNumber" : "1",
"electronegativity" : "2.2",
"group" : "Hydrogen",
"ionCharge1" : "1+",
"ionCharge2" : "1-",
"molarMass" : "1.01",
"naturalState" : "Gas",
"synthetic" : "false",
"diatomic" : "true",
"columnNumber" : "1",
"row" : "1",
"columnCode" : "IA",
"nobleGasConfiguration" : [
{
"term:" : "No Noble Gas Configuration",
"superScript" : "-"
}
],
"electronConfiguration" : [
{
"term" : "1s",
"superScript" : "1"
}
]
}
}
我怀疑这可能与子接口、超接口、实现的 class 等有关。本质上是尝试将方法与无法访问该方法的对象一起使用。但是,根据我的理解,这应该有效。
以下是您可能需要的 api 文件:
http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html
http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html
https://docs.oracle.com/javaee/7/api/javax/json/JsonValue.html
https://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html
https://docs.oracle.com/javaee/7/api/javax/json/JsonArray.html
把我的问题说清楚...为什么编译器给我 "cannot find symbol"?我必须更改代码中的哪些内容才能解决此问题?
我使用的是什么程序、版本等?
记事本
命令提示符
Java 8
javax.json-1.0.jar
请保留 javax.json 和 java 的答案。
您收到错误是因为 elementKeys.next()
returns 一个 String
,它没有 getValueType()
方法。您不需要 if 检查,也不需要 (String)elementKeys.next();
中的强制转换。只需删除那些,你应该没问题。
我有一个数据库,通过我的代码,我将我的数据库放入 Json 数组并开始遍历 Json 数组,(仅查找 Json 对象)。从那里,我相信我有这个设置,所以我可以遍历每个 JsonObject 的属性。但是,每个 Json 对象包含 Json 字符串和 Json 数组。现在,我正在试验,所以我尝试为数组创建一个手动异常,基本上我尝试设置它的方式是,如果您正在处理 Json 字符串,则只做您的工作。
import javax.json.Json;
import javax.json.JsonReader;
import javax.json.JsonStructure;
import javax.json.JsonObject;
import javax.json.JsonArray;
import javax.json.JsonValue;
import java.util.Iterator;
import java.util.Collection;
import java.io.FileReader;
import java.io.IOException;
public class DataTest
{
public static void main(String[]args) throws IOException
{
String strValue = "";
JsonReader reader = Json.createReader(new FileReader("Elements.JSON"));
JsonObject jsonst = reader.readObject();
JsonArray elements = jsonst.getJsonArray("Elements");
for (int i = 0; i < elements.size(); i++)
{
JsonObject element = elements.getJsonObject(i);
Collection<String> elementValues = element.keySet();
Iterator<String> elementKeys = elementValues.iterator();
while(elementKeys.hasNext())
{
//Error is over here!!!
if(elementKeys.next().getValueType().equals(JsonValue.ValueType.STRING))
{
String elementKey = (String)elementKeys.next();
strValue = element.getString(elementKey);
System.out.println(strValue);
}
}
}
reader.close();
}
}
我相信我有正确的导入,但是当我尝试编译它时,编译器在 .getValueType() 方法中给了我 "cannot find symbol"。 (我在我的代码中留下了一条说明 "Error is over here!!!" 的评论,带有此方法的行就在该评论的正下方)
我也检查了比较的格式,以下是复制粘贴自:http://www.programcreek.com/java-api-examples/index.php?api=javax.json.JsonString 如果 ((results.getValueType().等于(JsonValue.ValueType.STRING))
这是我的数据库的一小部分:
{
"Elements" : [
{
"name" : "Hydrogen",
"Symbol" : "H",
"atomicNumber" : "1",
"electronegativity" : "2.2",
"group" : "Hydrogen",
"ionCharge1" : "1+",
"ionCharge2" : "1-",
"molarMass" : "1.01",
"naturalState" : "Gas",
"synthetic" : "false",
"diatomic" : "true",
"columnNumber" : "1",
"row" : "1",
"columnCode" : "IA",
"nobleGasConfiguration" : [
{
"term:" : "No Noble Gas Configuration",
"superScript" : "-"
}
],
"electronConfiguration" : [
{
"term" : "1s",
"superScript" : "1"
}
]
}
}
我怀疑这可能与子接口、超接口、实现的 class 等有关。本质上是尝试将方法与无法访问该方法的对象一起使用。但是,根据我的理解,这应该有效。
以下是您可能需要的 api 文件:
http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html
http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html
https://docs.oracle.com/javaee/7/api/javax/json/JsonValue.html
https://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html
https://docs.oracle.com/javaee/7/api/javax/json/JsonArray.html
把我的问题说清楚...为什么编译器给我 "cannot find symbol"?我必须更改代码中的哪些内容才能解决此问题?
我使用的是什么程序、版本等?
记事本
命令提示符
Java 8
javax.json-1.0.jar
请保留 javax.json 和 java 的答案。
您收到错误是因为 elementKeys.next()
returns 一个 String
,它没有 getValueType()
方法。您不需要 if 检查,也不需要 (String)elementKeys.next();
中的强制转换。只需删除那些,你应该没问题。