使用jsonobject
将密钥转换为org.json.simple
。我尝试了多种方法来做,但是都失败了
第一种方法
JSONObject name1 = (JSONObject) jsonObject.get(key);
错误:无法将java.lang.string转换为org.json.simple.json.object
第二种方式
JSONParser parser = new JSONParser();
JSONObject name1 = (JSONObject) parser.parse(key);
错误:位置0处出现意外字符(N)。 在org.json.simple.parser.Yylex.yylex(未知来源) 在org.json.simple.parser.JSONParser.nextToken(未知来源) 在org.json.simple.parser.JSONParser.parse(未知来源) 在org.json.simple.parser.JSONParser.parse(未知来源) 在org.json.simple.parser.JSONParser.parse(未知来源)
第三种方式
Long name1 = Long.valueOf(jsonObject.get(key));
错误:Long类型的valueValue(String)方法不适用于参数(对象)
第四种方式
我使用了此功能:
optJSONObject(key)
错误:未为JSONObject定义optJSONObject
如何使它正常工作?
答案 0 :(得分:0)
因此JSONObject.get(key)函数通常不返回json对象本身。但是org.json数据包并没有解决这个问题。 由于org.json包含2个JSONObject包,org.json.simple和普通的org.json.JSONObject,因此请仔细阅读,因此我不知道这是否在org.json.simple中明确起作用,但这是我的工作使用org.json包处理JSONObject时。
JSONObject name1 = jsonObject.getJSONObject(key);
此行可以完成您要在其中执行的操作。试试吧。
JSON包带来了诸如getInt,getString,getJSONObject之类的函数,供您确切指定要获取的数据类型。
答案 1 :(得分:0)
此行
错误:位置0处出现意外字符(N)。
以第二种方式代码片段/引用要解析无效JSON的状态。
此行中的JSONObject name1 = (JSONObject) parser.parse(key);
key
可能包含无效的JSON。这就是解析器引发异常的原因。
您可以尝试调试代码,查看key
字符串的样子,然后应该找出哪个字符串(如果不是全部)包含无效的JSON。
我创建了一个简约程序,该程序从文件(您在@ Sepx3的答案下提到)中解析有效的JSONArray
(如果文件仅包含一个JSON对象,则解析为JSONObject
。我试图将您的代码片段中的名称用于相关代码,以便保持清晰。
我的C:/Users/Envy/Documents/company.json
示例文件的内容:
[
{
"key": "value"
},
{
"key1": "value1"
},
[
{
"key2": "value2"
},
{
"key3": "value3"
}
]
]
和解析它的代码将其存储到对象中,然后检查是否已解析JSONArray
或单个JSONObject
(在我的示例中为JSONArray
)。
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.FileReader;
public class DemoApplication {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
Object obj = null;
try {
obj = parser.parse(new FileReader("C:/Users/Envy/Documents/company.json"));
} catch (Exception e) {
// Handle possible exceptions
e.printStackTrace();
}
// If the parsed string was a single json object
if (obj instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) obj;
// Do something with jsonObject, in this example it prints the content of jsonObject
System.out.println(jsonObject);
}
// Or else if the parsed string was a json array
else if (obj instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) obj;
// Do something with jsonArray, in this example it prints the content of jsonArray
System.out.println(jsonArray);
}
}
}
我希望这至少对您有所帮助,并使您走上正确的轨道。