如何从用户对象中获取值?

jyo*_*adi 0 android json

嗨,在下面的代码中如何从用户对象获取以下 JSON 响应的名称。想要显示名称和设置到微调器适配器。

谁能帮我

预期输出:

Admin Administrator
Ganeshprasad S etc
Run Code Online (Sandbox Code Playgroud)

回复:

    {
  "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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

下面是代码。微调器没有显示任何内容

爪哇:

if (name.equals("assigned_user_id")) {
                                            String jsondata ="";
                                            try {
                                                JSONObject jsonobj = new JSONObject(jsondata);
                                                JSONObject type = jsonobj.getJSONObject("type");
                                                JSONObject usr = type.getJSONObject("users");
                                                Iterator<String> keys = usr.keys();
                                                while(keys.hasNext()) {
                                                    String key = keys.next();
                                                    if (jsonobj.get(key) instanceof JSONObject) {
                                                        String v = usr.getString("19x1");

                                                       account_manger.add(v);
                                                        ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, account_manger);
                                                        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                                                        spinneraccountManager.setAdapter(dataAdapter);

                                                    }
                                                }
                                            } catch (JSONException e) {
                                                e.printStackTrace();
                                            }
Run Code Online (Sandbox Code Playgroud)

Wah*_*iri 6

假设您的 JSON 数据在字符串中

String jsondata ;
JSONObject jsonobj = new JSONObject(jsondata);
Run Code Online (Sandbox Code Playgroud)

由于这个 json 对象有很多属性,所以我们将获得类型为 Object 的属性“type”,因此我们将创建另一个 JSONObject 对象

JSONObject type = jsonobj.getJSONObject("type");
Run Code Online (Sandbox Code Playgroud)

在这个类型的 json 对象中,我们有两个属性 name 和 users,其中 user 是另一个对象,所以我们将从类型 object 中获取 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......
Run Code Online (Sandbox Code Playgroud)

为 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" />  
Run Code Online (Sandbox Code Playgroud)

而 MainActivity 代码是

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  
}
Run Code Online (Sandbox Code Playgroud)