我从soundcloud api获取okhttp库和gson库的结果,但我不知道如何正确使用它,我可以使用Asynctask和gson库还是应该为此目的使用改造这是我的代码
main activity.Java
public class MainActivity extends Activity
{
Button b;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b = (Button) findViewById(R.id.start);
b.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View p1)
{
// TODO: Implement this method
MyAsyncTask task = new MyAsyncTask();
task.execute();
}
});
}
}
my A sync task.Java
public class MyAsyncTask extends AsyncTask <Void,Void,String>
{
public static final String API_URL = "https://api.soundcloud.com";
public static final String CLIENT_ID ="iZIs9mchVcX5lhVRyQGGAYlNPVldzAoX";
String url = "https://api.soundcloud.com/tracks?client_id=iZIs9mchVcX5lhVRyQGGAYlNPVldzAoX";
String res;
Context ctx;
Track t;
String temp;
List<Track> tracks;
@Override
protected String doInBackground(Void[] p1)
{
// TODO: Implement this method
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
try
{
Response response = client.newCall(request).execute();
res = response.body().string();
}
catch (IOException e)
{
String err = (e.getMessage() == null) ?"Failed to translate": e.getMessage();
Log.e("failed:", err);
}
return res;
}
@Override
protected void onPostExecute(String result)
{
// TODO: Implement this method
//Toast.makeText(ctx,"result "+result, Toast.LENGTH_SHORT).show();
Log.d("Track","");
Log.e("res", result);
super.onPostExecute(result);
}
}
track.Java
public class Track
{
@SerializedName("title")
private String mTitle;
@SerializedName("stream_url")
private String mStreamUrl;
public String getTitle()
{
return mTitle;
}
public String getStreamUrl()
{
return mStreamUrl;
}
}
我的json结果是String res值,那么如何只用gson库显示曲目标题名?
发现了类似的问题here。
将字符串格式化为Gson格式,然后检索您的标题。
Response response = client.newCall(request).execute();
res = response.body().string();
Track[] track = new Gson().fromJson(res,Track[].class);
track []现在包含一个轨道列表,用于检索您需要迭代列表并检索每个轨道标题的每个轨道。例如,track[0].getTitle()
应该返回你的第一首歌。
我在python中做了一个快速示例,看看它是否有效(在这台PC上没有我的Java环境)。
这是Python中的代码
import urllib, json
url = "https://api.soundcloud.com/tracks?client_id=iZIs9mchVcX5lhVRyQGGAYlNPVldzAoX"
response = urllib.urlopen(url)
array = json.loads(response.read())
for index, value in enumerate(array):
print array[index]['title']
这是我的输出:
"What Kind Of" by Maïmouna Guerresi
Swiftness - Akrown Mix
Disney Network Is So Corruped
Closer - The Chainsmokers (Cover)
VISUALISATION OF SOUND. S.Letov, R.Stolyar, A.Vostrtikov, G.Averin.
s a d m a n h o u r s
Jackass Alt76 MasteringBOX
OBEDIAH-SERIOUS - TIMES. GAP STOPPING RIDDIM TIMES
idrk
Ghost (OG COVER)
Stadtratswahlen 2018: Stefan Erdös ist ein Wahlbeobachter
Hoi Han Trong Anh - Ben Heineken Remix
XXXTentacion - Changes Remix By Joseph Okuwa
NCT_DREAM_엔시티_드림_GO
新曲0305
How Can Love Be Mature - demo
【ハッピーガバコンピ】トリフィドの友人(cribbing ver)
20170322
10 toes challenge Rip Ari2x and Quasean (12/12/2017)
Note
Miniature Authority (short logo music)
Linnahalli Kai
Jacquees- 10-4 (Chimpmunk Version)
Stars
Madrid (King Richard Cover)
Systemaudio - Part 1
Londonvybes.com 2018 Update On Grenfell
Brink Remix [Ray Punch]
Validation on the road
i'll kill it when im asleep
The forever land
Avicii – How Many Lovers(Drop)/ MODE COLD BREW JINGLE
Imperial 1 - Papa Did You Know (Audio)
Dj Devil School Armenia Freestyle Remix ريمكس ديجي دفل اسكول فرستايل.MP3
album nyckelharpa solo - part 1
Strips(ep.1)
We'll Get By
Are We Too Hard on Rookies? - The Left Turn
Bluddy Katon (OG COVER)
The 1960s Were Great
Where is the love?