Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从用户对象中获取值?_Android_Json - Fatal编程技术网

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

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

在下面的代码中,大家好。如何从users对象获取下面JSON响应的名称。要显示微调器适配器的名称和设置吗

有人能帮我吗

预期产出:

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) {
            }
        });