gpt4 book ai didi

java - 如何将json数组从laravel路由器传递到android studio中的android类

转载 作者:行者123 更新时间:2023-12-02 11:06:43 25 4
gpt4 key购买 nike

我是 android studio 的新手,想要为 android studio 创建 lumen api,我创建了一个简单的 android 项目,我从 lumen web.php 文件获取数组项列表并显示到 xml listview。我工作得很好。我的问题是我创建了一个简单的 laravel lumen api,其中从 android 项目中点击 url 时,它会转到 lumen 项目的 web.php 并返回带有数组的 json 响应。我的 web.php 文件如下:

$router->get('/demo',function(){
$array = User::get();//variable array contain all users data
return response()->json($array);
});

我的 MainActivity 如下:

package com.example.ram.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {
ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

listView = (ListView) findViewById(R.id.listViewHeroes);

//calling the method to display the heroes
getHeroes();
}

private void getHeroes() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Api.BASE_URL)
.addConverterFactory(GsonConverterFactory.create()) //Here we are using the GsonConverterFactory to directly convert json data to object
.build();

Api api = retrofit.create(Api.class);

Call<List<Hero>> call = api.getHeroes();

call.enqueue(new Callback<List<Hero>>() {
@Override
public void onResponse(Call<List<Hero>> call, Response<List<Hero>> response) {

List<Hero> heroList = response.body();

//Creating an String array for the ListView
String[] heroes = new String[heroList.size()];

//looping through all the heroes and inserting the names inside the string array
for (int i = 0; i < heroList.size(); i++) {
heroes[i] = heroList.get(i).getName();
}


//displaying the string array into listview
listView.setAdapter(new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, heroes));

}

@Override
public void onFailure(Call<List<Hero>> call, Throwable t) {
Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}

}

我想在我的 xml ListView 中显示这个数组,但它在模拟器上显示错误:-“预期为 BEGIN_ARRAY,但在第 1 行第 2 列路径 $ 处为 BEGIN_OBJECT”

请帮助我如何使用 android studio 处理 json 响应

最佳答案

试试这个

$router->get('/demo',function(){
$heroes = [
['name' => 'mahesh'], //this associative array represent your Android `Hero` mapping class
['name' => 'vishal'],
]
return response()->json($heroes);
});

如果你想从数据库中获取数据,那么你可以这样做

$heroes = User::all();

或者

$heroes = User::where(...)->get();

关于java - 如何将json数组从laravel路由器传递到android studio中的android类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50905043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com