使用java收集Json对象和数组时出现问题
首先,我是新手,所以请原谅我。我一直在开发一个音乐应用程序,我正在尝试解析来自流媒体链接的JSON代码,并向我的应用程序用户显示歌曲的“艺术家”姓名和“标题”。但我在收集数据时遇到了问题。 以下是我在流链接中的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
{"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);
}
}