Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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收集Json对象和数组时出现问题_Java_Android - Fatal编程技术网

使用java收集Json对象和数组时出现问题

使用java收集Json对象和数组时出现问题,java,android,Java,Android,首先,我是新手,所以请原谅我。我一直在开发一个音乐应用程序,我正在尝试解析来自流媒体链接的JSON代码,并向我的应用程序用户显示歌曲的“艺术家”姓名和“标题”。但我在收集数据时遇到了问题。 以下是我在流链接中的JSON代码: {"type":"result","data":[{"title":"My Stream ","song":"Unknown - The Authorised One","track":{"artist":"Unknown Artist","title":"The Auth

首先,我是新手,所以请原谅我。我一直在开发一个音乐应用程序,我正在尝试解析来自流媒体链接的JSON代码,并向我的应用程序用户显示歌曲的“艺术家”姓名和“标题”。但我在收集数据时遇到了问题。 以下是我在流链接中的JSON代码:

{"type":"result","data":[{"title":"My Stream ","song":"Unknown - The Authorised One","track":{"artist":"Unknown Artist","title":"The Authorised One","album":"Unknown","royaltytrackid":181938.0000,"started":1498151105,"id":181938,"length":0,"playlist":{"id":3520,"title":"Rev Arome E. Adah"},"buyurl":"https:\/\/itunes.apple.com\/us\/album\/the-unknown-god\/id772022436?uo=4","imageurl":"http:\/\/is5.mzstatic.com\/image\/thumb\/Music5\/v4\/d7\/6d\/52\/d76d52df-db43-7130-0e37-62241ff50a21\/source\/100x100bb.jpg"},"bitrate":"128 Kbps","server":"Online","autodj":"Online","source":"Yes","offline":false,"summary":"<a href=\"http:\/\/cp9.serverse.com:2199\/tunein\/-stream\/svhxmwhp.pls\">Eloti Designs Stream - Unknown - The Authorised One<\/a>","listeners":0,"maxlisteners":1000,"reseller":0,"serverstate":true,"sourcestate":true,"sourceconn":1,"date":"Jun 22, 2017","time":"07:06 PM","rawmeta":"Unknown - The Authorised One ","mountpoint":"\/stream","tuneinurl":"http:\/\/209.133.216.3:7550\/stream","directtuneinurl":"","proxytuneinurl":"http:\/\/209.133.216.3\/proxy\/svhxmwhp?mp=\/stream","tuneinformat":"mp3","webplayer":"muses","servertype":"ShoutCast2","listenertotal":0,"url":"http:\/\/cp9.serverse.com:2199\/rpc"}]

track
是一个包含
artist
的jsonobject,并且
track
位于
数据
数组,因此提取
轨迹
然后从中提取
艺术家

String songName = finalObject.getJSONObject("track").getString("artist");

{
    "type":"result",
    "data":[                            // fetch JSONArray
        {                               // fetch first JSONObject
             "title":"My Stream ","song":"Unknown - The Authorised One",
             "track":{                  // fetch track JSONObject
                  "artist":"Unknown .." // fetch string 

你试过jackson解析器吗?它非常易于使用,并且可以轻松解析上面的字符串。您只需创建映射结构的3/4 POJO类,然后将映射器的readValue函数应用于外部类。下面是一个小示例,其中包含一个列表和一个内部类:

import java.io.IOException;
import java.util.List;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

class OutterPojo {

    public String aString;
    public List<InnerPojo> aList;

    public String getaString() {
        return aString;
    }

    public void setaString(String aString) {
        this.aString = aString;
    }

    public List<InnerPojo> getaList() {
        return aList;
    }

    public void setaList(List<InnerPojo> aList) {
        this.aList = aList;
    }

    @Override
    public String toString() {
        return new StringBuilder().append("{ #OutterPojo# ").append("aString:").append(aString).append(", ").append("aList:")
                .append(aList).append(" }").toString();
    }
}

class InnerPojo {

    public String anotherString;

    public String getanotherString() {
        return anotherString;
    }

    public void setanotherString(String anotherString) {
        this.anotherString = anotherString;
    }

    @Override
    public String toString() {
        return new StringBuilder().append("{ #InnerPojo# ").append("anotherString:").append(anotherString).append(" }")
                .toString();
    }
}

public class Test {

    public static void main(String args[]) throws JsonParseException, JsonMappingException, IOException {
        String jsonData = "{\"aString\":\"s\",\"aList\":[{\"anotherString\":\"ss\"},{\"anotherString\":\"sss\"}]}";
        ObjectMapper objectMapper = new ObjectMapper();
        OutterPojo testObject = objectMapper.readValue(jsonData, OutterPojo.class);
        System.out.println(testObject);
    }

}
import java.io.IOException;
导入java.util.List;
导入com.fasterxml.jackson.core.JsonParseException;
导入com.fasterxml.jackson.databind.JsonMappingException;
导入com.fasterxml.jackson.databind.ObjectMapper;
OutterPojo类{
公共字符串搜索;
公开名单;
公共字符串getaString(){
回程收缩;
}
公共无效设置限制(字符串限制){
这个。收敛=收敛;
}
公共列表getaList(){
回归主义者;
}
公共无效集合列表(列表列表列表){
this.aList=aList;
}
@凌驾
公共字符串toString(){
返回新的StringBuilder()
.append(aList.append(“}”).toString();
}
}
类InnerPojo{
公共字符串另一个字符串;
公共字符串getanotherString(){
返回另一个字符串;
}
public void setanotherString(字符串anotherString){
this.anotherString=另一个字符串;
}
@凌驾
公共字符串toString(){
返回新的StringBuilder().append({#InnerPojo#').append(“另一个字符串:”).append(另一个字符串).append(“}”)
.toString();
}
}
公开课考试{
公共静态void main(字符串args[])抛出JsonParseException、JsonMappingException、IOException{
字符串jsonData=“{\'aString\':\'s\',\'aList\':[{\'anotherString\':\'ss\'},{\'anotherString\':\'sss\'}];
ObjectMapper ObjectMapper=新的ObjectMapper();
OutterPojo testObject=objectMapper.readValue(jsonData,OutterPojo.class);
System.out.println(testObject);
}
}
至于依赖关系,您只需要jackson core、jackson databind和jackson annotations即可实现此功能-以下是指向maven的链接:


希望有帮助!:)

我很高兴我能帮上忙,保持安全:)
import java.io.IOException;
import java.util.List;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

class OutterPojo {

    public String aString;
    public List<InnerPojo> aList;

    public String getaString() {
        return aString;
    }

    public void setaString(String aString) {
        this.aString = aString;
    }

    public List<InnerPojo> getaList() {
        return aList;
    }

    public void setaList(List<InnerPojo> aList) {
        this.aList = aList;
    }

    @Override
    public String toString() {
        return new StringBuilder().append("{ #OutterPojo# ").append("aString:").append(aString).append(", ").append("aList:")
                .append(aList).append(" }").toString();
    }
}

class InnerPojo {

    public String anotherString;

    public String getanotherString() {
        return anotherString;
    }

    public void setanotherString(String anotherString) {
        this.anotherString = anotherString;
    }

    @Override
    public String toString() {
        return new StringBuilder().append("{ #InnerPojo# ").append("anotherString:").append(anotherString).append(" }")
                .toString();
    }
}

public class Test {

    public static void main(String args[]) throws JsonParseException, JsonMappingException, IOException {
        String jsonData = "{\"aString\":\"s\",\"aList\":[{\"anotherString\":\"ss\"},{\"anotherString\":\"sss\"}]}";
        ObjectMapper objectMapper = new ObjectMapper();
        OutterPojo testObject = objectMapper.readValue(jsonData, OutterPojo.class);
        System.out.println(testObject);
    }

}