Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Gson取消序列化对象数组_Java_Json_Gson - Fatal编程技术网

Java 使用Gson取消序列化对象数组

Java 使用Gson取消序列化对象数组,java,json,gson,Java,Json,Gson,我有一个类似这样的JSON响应。我想提取“text”的值并将它们放入一组字符串中(即,我不一定需要对整个JSON进行派生) 我正在使用图书馆 到目前为止,我的方法是这样的(显然是错误的): 我正在调用反序列化,方法如下: Response r = deserialise(json); System.out.println("[status]: "+r.getStatus()); // works fine Collection<Keyword> coll = r.g

我有一个类似这样的JSON响应。我想提取“text”的值并将它们放入一组字符串中(即,我不一定需要对整个JSON进行派生)

我正在使用图书馆

到目前为止,我的方法是这样的(显然是错误的):

我正在调用
反序列化
,方法如下:

Response r = deserialise(json);
System.out.println("[status]: "+r.getStatus());  // works fine
        Collection<Keyword> coll = r.getKeywords();
        Iterator<Keyword> itr = coll.iterator();
        while(itr.hasNext()){
System.out.println(itr.next().getWord());        //prints null every time
 }
JSON如下所示:

{
"status": "OK",
"usage": "By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html",
"url": "http://www.theage.com.au/world/aussie-trying-to-make-a-difference-gunned-down-20110510-1egnv.html",
"language": "english",
"keywords": [
    {
        "text": "Mr McNichols",
        "relevance": "0.99441"
    },
    {
        "text": "Ms Benton",
        "relevance": "0.392337"
    },
    {
        "text": "Detroit",
        "relevance": "0.363931"
    },
    {
        "text": "Crocodile Hunter",
        "relevance": "0.350197"
    }
    ]
}
问题是,关键字集合返回空值-尽管它的大小似乎正确,这是正的。

这只适用于:

public class Keyword {
    public String text;
    public String relevance;
}


public class MyJSON {
    public String status;
    public String usage;
    public String language;
    public Collection<Keyword> keywords;
}
这张照片

english
Mr McNichols:0.99441
Ms Benton:0.392337
Detroit:0.363931
Crocodile Hunter:0.350197

仔细看看我的关键字类!(我的JSON字符串以
{
开头)。

这都是我自己的愚蠢


在关键字类中,我调用了变量
word
,而该变量应该是
text
,以便正确映射到JSON。

对不起,请查看问题的最后一行。JSON也应该以[{…]}开头和结尾。.相关,但不是完全重复:
{
"status": "OK",
"usage": "By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html",
"url": "http://www.theage.com.au/world/aussie-trying-to-make-a-difference-gunned-down-20110510-1egnv.html",
"language": "english",
"keywords": [
    {
        "text": "Mr McNichols",
        "relevance": "0.99441"
    },
    {
        "text": "Ms Benton",
        "relevance": "0.392337"
    },
    {
        "text": "Detroit",
        "relevance": "0.363931"
    },
    {
        "text": "Crocodile Hunter",
        "relevance": "0.350197"
    }
    ]
}
public class Keyword {
    public String text;
    public String relevance;
}


public class MyJSON {
    public String status;
    public String usage;
    public String language;
    public Collection<Keyword> keywords;
}
        String str = "{\"status\": \"OK\","+
        "\"usage\": \"By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html\","+
        "\"url\": \"http://www.theage.com.au/world/aussie-trying-to-make-a-difference-gunned-down-20110510-1egnv.html\","+
        "\"language\": \"english\","+
        "\"keywords\": ["+
            "{"+
                "\"text\": \"Mr McNichols\","+
                "\"relevance\": \"0.99441\""+
            "},"+
            "{"+
                "\"text\": \"Ms Benton\","+
                "\"relevance\": \"0.392337\""+
            "},"+
            "{"+
                "\"text\": \"Detroit\","+
                "\"relevance\": \"0.363931\""+
            "},"+
            "{"+
                "\"text\": \"Crocodile Hunter\","+
                "\"relevance\": \"0.350197\""+
            "}"+
            "]"+
        "}";

        Gson gson = new Gson();
        MyJSON mj = gson.fromJson(str, MyJSON.class);
        System.out.println(mj.language);
        for(Keyword k: mj.keywords)
            System.out.println(k.text+":"+k.relevance);
english
Mr McNichols:0.99441
Ms Benton:0.392337
Detroit:0.363931
Crocodile Hunter:0.350197