我有一个很长的json答案,下面是:
{"head":{},"def":[{"text":"hello","pos":"noun","ts":"?he?l??","tr":[{"text":"привет","pos":"noun","syn":[{"text":"приветствие","pos":"noun","gen":"ср"}],"mean":[{"text":"hi"},{"text":"welcome"}],"ex":[{"text":"big hello","tr":[{"text":"большой привет"}]}]}]},{"text":"hello","pos":"verb","ts":"?he?l??","tr":[{"text":"поздороваться","pos":"verb","asp":"сов","mean":[{"text":"greet"}]}]}]}如你所见,有一些内部的块状物,我不能把它们弄出来!我只能得到"def“键,但我得到的是,例如,"tr”或"mean“。
我在这里找到了对我有用的代码:
public static void doJson(String link) throws ParseException {
JSONParser parser = new JSONParser();
JSONObject jj = (JSONObject) parser.parse(link);
String died = (String) ((JSONObject) ((JSONObject) jj.get("def")).get("tr")).get("text");
System.out.println(died);
}但它返回给我一个错误:
Exception in thread "main" java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject
at StringOfTrans.doJson(StringOfTrans.java:50)
at StringOfTrans.main(StringOfTrans.java:19) 所以,我认为这是正确的方式,但我需要解决它。我该怎么做呢?我想使用json-simple,这是我第一次使用JSON。因此,我已经阅读了如何在JSON只包含一个数组的情况下从json获取对象,但是我找不到使用json-simple解析内部数组的好例子。谢谢!
发布于 2017-03-25 18:59:44
根据JSON的结构判断,您可以获得"text“的值,如下所示:
JSONParser parser = new JSONParser();
JSONObject jj = (JSONObject) parser.parse(link);
JSONArray def = (JSONArray) jj.get("def");
JSONObject tr = (JSONObject) def.get(0);
String text = (String) tr.get("text"); //value is hello您应该看到"def“实际上是一个JSONArray对象。您应该根据需要更改代码以获得具有"text"值的不同节点,这只是一个示例,向您展示您将在此过程中接收JSONArray对象。如果出于某种原因,您想要获取mean数组。您只需重复上面代码中的步骤,因为这将应用于json文件中的任何其他元素。
JSONArray trArr = (JSONArray) tr.get("tr");
JSONObject meanNode = (JSONObject) trArr.get(0);
JSONArray meanArr = (JSONArray) meanNode.get("mean");这里唯一的困难是确定您的JSON结构,以了解您将拥有一个数组还是一个对象。
https://stackoverflow.com/questions/43015006
复制相似问题