首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json-simple Java:错误在哪里,如何解决?

json-simple Java:错误在哪里,如何解决?
EN

Stack Overflow用户
提问于 2017-03-25 18:00:53
回答 1查看 622关注 0票数 0

我有一个很长的json答案,下面是:

代码语言:javascript
复制
{"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“。

我在这里找到了对我有用的代码:

代码语言:javascript
复制
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);
}

但它返回给我一个错误:

代码语言:javascript
复制
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解析内部数组的好例子。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-03-25 18:59:44

根据JSON的结构判断,您可以获得"text“的值,如下所示:

代码语言:javascript
复制
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文件中的任何其他元素。

代码语言:javascript
复制
JSONArray trArr = (JSONArray) tr.get("tr");
JSONObject meanNode = (JSONObject) trArr.get(0);
JSONArray meanArr = (JSONArray) meanNode.get("mean");

这里唯一的困难是确定您的JSON结构,以了解您将拥有一个数组还是一个对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43015006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档