Android 如何从用户对象中获取值?
在下面的代码中,大家好。如何从users对象获取下面JSON响应的名称。要显示微调器适配器的名称和设置吗 有人能帮我吗 预期产出:Android 如何从用户对象中获取值?,android,json,Android,Json,在下面的代码中,大家好。如何从users对象获取下面JSON响应的名称。要显示微调器适配器的名称和设置吗 有人能帮我吗 预期产出: Admin Administrator Ganeshprasad S etc 答复: { "name": "assigned_user_id", "label": "Assigned To", "mandatory": true, "type": { "name": "owner", "users": { "19
Admin Administrator
Ganeshprasad S etc
答复:
{
"name": "assigned_user_id",
"label": "Assigned To",
"mandatory": true,
"type": {
"name": "owner",
"users": {
"19x1": "Admin Administrator",
"19x5": "Ganeshprasad S",
"19x6": "Balaji RR",
"19x7": "Kiran Thadimarri",
"19x8": "Sridhar Balakrishnan",
"19x9": "Shilpa MK",
"19x10": "Velmurugan N",
"19x11": "Aamir Khanna",
"19x12": "Jamir Abbas Pinjari",
"19x13": "Syed Shadab Ashraf",
"19x14": "Shahul Hameed",
"19x15": "Manjula C",
"19x16": "Keerthi Vasan L",
"19x17": "Lochan Jyoti Borgohain",
"19x18": "Rajkumar Sanatomba Singh",
"19x19": "Krishna Pandey",
"19x20": "Nabajit Pathak",
"19x21": "Manoranjan Ningthoujam",
"19x22": "Pravin Karbhari Ahire",
"19x23": "Pratap Kumar Choudhary"
}
}
}
下面是代码。微调器没有显示任何内容
爪哇:
假设JSON数据是字符串
String jsondata ;
JSONObject jsonobj = new JSONObject(jsondata);
因为这个json对象有很多属性,所以我们将得到类型为object的属性类型,所以我们将创建另一个JSONObject对象
JSONObject type = jsonobj.getJSONObject("type");
在这个类型的json对象中,我们有两个属性name和users,其中user是另一个对象,所以我们将从类型对象中获取users对象
JSONObject usr = jsonobj.getJSONObject("users");
Iterator<String> keys = usr.keys();
while(keys.hasNext()) {
String key = keys.next();
if (jsonObject.get(key) instanceof JSONObject) {
//print here
}
}
// String n1 = usr.getString("19x1");
// String n2 = usr.getString("19x5");
// String n3 = usr.getString("19x6");
//and So on......
为Spinner Android创建XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Spinner
android:id="@+id/spinner"
android:layout_width="149dp"
android:layout_height="40dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.498" />
主活动代码是
public class MainActivity extends AppCompatActivity implements
AdapterView.OnItemSelectedListener {
String[] names = { n1,n2,n3};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Getting the instance of Spinner and applying OnItemSelectedListener on it
Spinner spin = (Spinner) findViewById(R.id.spinner);
spin.setOnItemSelectedListener(this);
//Creating the ArrayAdapter instance having the list
ArrayAdapter aa = new ArrayAdapter(this,android.R.layout.simple_spinner_item,country);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Setting the ArrayAdapter data on the Spinner
spin.setAdapter(aa);
}
//Performing action onItemSelected and onNothing selected
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) {
Toast.makeText(getApplicationContext(),names[position] , Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
这是数据类
用户阵列列表
这是您获取数据的方式
ArrayList<User> userList = new ArrayList<>();
try {
JSONObject jsonobj = new JSONObject(response);
JSONObject type = jsonobj.getJSONObject("type");
JSONObject usr = type.getJSONObject("users");
Iterator<String> keys = usr.keys();
while(keys.hasNext()) {
String key = keys.next();
String value = usr.getString(key);
User user = new User(key,value);
userList.add(user);
}
Log.e("value","value----"+userList);
} catch (JSONException e) {
e.printStackTrace();
}
这是微调器适配器
您对json输出的格式有任何控制吗?我没有得到?……请检查下面的答案:wstring n1=usr.getString19x1;它是硬编码的数据,您可以在键上迭代,并获得值字符串n1=usr.getString19x1;让我们来看看。用户不是arraylist
String response = "{\n" +
" \"name\": \"assigned_user_id\",\n" +
" \"label\": \"Assigned To\",\n" +
" \"mandatory\": true,\n" +
" \"type\": {\n" +
" \"name\": \"owner\",\n" +
" \"users\": {\n" +
" \"19x1\": \"Admin Administrator\",\n" +
" \"19x5\": \"Ganeshprasad S\",\n" +
" \"19x6\": \"Balaji RR\",\n" +
" \"19x7\": \"Kiran Thadimarri\",\n" +
" \"19x8\": \"Sridhar Balakrishnan\",\n" +
" \"19x9\": \"Shilpa MK\",\n" +
" \"19x10\": \"Velmurugan N\",\n" +
" \"19x11\": \"Aamir Khanna\",\n" +
" \"19x12\": \"Jamir Abbas Pinjari\",\n" +
" \"19x13\": \"Syed Shadab Ashraf\",\n" +
" \"19x14\": \"Shahul Hameed\",\n" +
" \"19x15\": \"Manjula C\",\n" +
" \"19x16\": \"Keerthi Vasan L\",\n" +
" \"19x17\": \"Lochan Jyoti Borgohain\",\n" +
" \"19x18\": \"Rajkumar Sanatomba Singh\",\n" +
" \"19x19\": \"Krishna Pandey\",\n" +
" \"19x20\": \"Nabajit Pathak\",\n" +
" \"19x21\": \"Manoranjan Ningthoujam\",\n" +
" \"19x22\": \"Pravin Karbhari Ahire\",\n" +
" \"19x23\": \"Pratap Kumar Choudhary\"\n" +
" }\n" +
" }\n" +
"}";
public class User {
private String id;
private String name;
public User(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return name;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof User){
User user = (User )obj;
if(user.getName().equals(name) && user.getId()==id ) return true;
}
return false;
}
}
ArrayList<User> userList = new ArrayList<>();
try {
JSONObject jsonobj = new JSONObject(response);
JSONObject type = jsonobj.getJSONObject("type");
JSONObject usr = type.getJSONObject("users");
Iterator<String> keys = usr.keys();
while(keys.hasNext()) {
String key = keys.next();
String value = usr.getString(key);
User user = new User(key,value);
userList.add(user);
}
Log.e("value","value----"+userList);
} catch (JSONException e) {
e.printStackTrace();
}
ArrayAdapter<User> adapter = new ArrayAdapter<User>(context, android.R.layout.simple_spinner_dropdown_item, userList );
spinneraccountManager.setAdapter(adapter);
spinneraccountManager.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
User user = (User) parent.getSelectedItem();
Toast.makeText(view.getContext(), "User ID: "+user.getId()+", User Name : "+user.getName(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});