Java JSON截击解析错误
今天我发现了一个非常愚蠢的问题 以下是我的主要活动:Java JSON截击解析错误,java,android,json,api,android-volley,Java,Android,Json,Api,Android Volley,今天我发现了一个非常愚蠢的问题 以下是我的主要活动: public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private CoinRecyclerViewAdapter coinRecyclerViewAdapter; private List<Coin> coinList; private RequestQueue queu
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private CoinRecyclerViewAdapter coinRecyclerViewAdapter;
private List<Coin> coinList;
private RequestQueue queue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
queue= Volley.newRequestQueue(this);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
recyclerView=findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
coinList=new ArrayList<>();
Prefs prefs = new Prefs(MainActivity.this);
String search = prefs.getSearch();
getCoins(search);
}
//get coins
public List<Coin> getCoins(
String searchTerm
){
coinList.clear();
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,
Constants.URL_LEFT
//searchTerm+Constants.URL_RIGHT
, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray coinsArray=response.getJSONArray("data");
for (int i = 0; i < coinsArray.length(); i++){
JSONObject coinObj = coinsArray.getJSONObject(i);
Coin coin = new Coin();
coin.setName(coinObj.getString("name"));
coin.setSymbol(coinObj.getString("symbol"));
coin.setPrice(coinObj.getDouble("price"));
coin.setRank(coinObj.getInt("rank"));
coin.setPercentChange24h(coinObj.getDouble("percent_change_24h"));
coin.setMarketCap(coinObj.getDouble("market_cap"));
//coin.setPriceBtc(coinObj.getFloat("price_btc"));
coin.setTotalSupply(coinObj.getLong("total_supply"));
Log.d("kreten","kreten");
Log.d("coins:",String.valueOf(coin.getPrice()));
}
}catch (JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(jsonObjectRequest);
return coinList;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
public类MainActivity扩展了AppCompatActivity{
私人回收站;
私有CoinRecycleServiceAdapter CoinRecycleServiceAdapter;
私人名单;
私有请求队列;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
queue=Volley.newRequestQueue(this);
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
}
});
recyclerView=findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
coinList=新的ArrayList();
Prefs Prefs=新的Prefs(MainActivity.this);
String search=prefs.getSearch();
获取硬币(搜索);
}
//得到硬币
公共货币清单(
字符串搜索项
){
coinList.clear();
JsonObjectRequest JsonObjectRequest=新的JsonObjectRequest(Request.Method.GET,
Constants.URL_左
//searchTerm+Constants.URL\u右键
,new Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray coinsArray=response.getJSONArray(“数据”);
对于(int i=0;i
我需要将数据从这个api解析到我的应用程序
我在尝试编译json对象并从中获取数据时发现了问题,但在尝试Log.d(“Coins”,coin.getName())时发现了问题;
我没有名字,我有这个
值:和整个json数据
(这不是我想要的,我只需要名字,所以我认为我在MainActivity中犯了一个错误,我试图获取“数据”对象,我认为我得到了它,但我没有得到完整的对象,因为我认为我需要代码来读取api中硬币id上方或“数据”下方的随机数。)
因此,我的问题是如何从api中获取价格、等级、符号等,我认为我在这里犯了错误:
//获取硬币
公共货币清单(
字符串搜索项
){
coinList.clear();
JsonObjectRequest JsonObjectRequest=新的JsonObjectRequest(Request.Method.GET,
Constants.URL_左
//searchTerm+Constants.URL\u右键
,new Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray coinsArray=response.getJSONArray(“数据”);
对于(int i=0;i
您的线路
JSONArray coinsArray=response.getJSONArray("data");
..希望将数据对象解析为数组。
如果我们查看coinmarketcap.com/v2/ticker中JSON响应的第一行,我们会看到
{
"data": {
"1": {
"id": 1,
"name": "Bitcoin",
"symbol": "BTC",
"website_slug": "bitcoin",
"rank": 1,
…但是如果它是一个数组,它会像“data”:[{
“数据”包含一个Map