Java 将4D数组转换为json,以便将其发布到php服务器

Java 将4D数组转换为json,以便将其发布到php服务器,java,android,json,Java,Android,Json,我是AndroidJava的新手,正在开发一个需要向服务器发送数据的android应用程序。 如何将Java中的4D字符串数组转换为JSON,以便将其发布到PHP服务器 下面是如何生成4D阵列的代码 /// GET ALL USERS CONTACTS public String[] fetchContacts(Context c) { String phoneNumber = null; String email = null; Uri CONTENT_U

我是AndroidJava的新手,正在开发一个需要向服务器发送数据的android应用程序。 如何将Java中的4D字符串数组转换为JSON,以便将其发布到PHP服务器

下面是如何生成4D阵列的代码

    /// GET ALL USERS CONTACTS
public String[] fetchContacts(Context c) { 
    String phoneNumber = null; 
    String email = null; 
    Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI; 
    String _ID = ContactsContract.Contacts._ID; 
    String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME; 
    String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER; 
    Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
    String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID; 
    String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER; 
    Uri EmailCONTENT_URI =  ContactsContract.CommonDataKinds.Email.CONTENT_URI;
    String EmailCONTACT_ID = ContactsContract.CommonDataKinds.Email.CONTACT_ID; 
    String DATA = ContactsContract.CommonDataKinds.Email.DATA; 
    //StringBuffer output = new StringBuffer(); 
    ContentResolver contentResolver = context.getContentResolver(); 
    Cursor cursor = contentResolver.query(CONTENT_URI, null,null, null, null);   

    List<String[][]> MasterArray = new ArrayList<String[][]>(); // Master Array

    String[] OneContactRow[] = new String[3][] ;

    String[] BigMasterArr = null ;

    List<String> displayname = new ArrayList<String>(); // Store all names
    List<String> PhoneNumbers = new ArrayList<String>(); // Store all phone numbers
    List<String> Emails = new ArrayList<String>(); // store all email address

    boolean hasContacts = false ;

    if (cursor.getCount() > 0) { 

        // Loop for every contact in the phone
        while (cursor.moveToNext()) { 
            String contact_id = cursor.getString(cursor.getColumnIndex( _ID )); 
            String name = cursor.getString(cursor.getColumnIndex( DISPLAY_NAME )); 
            int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex( HAS_PHONE_NUMBER ))); 
            if (hasPhoneNumber > 0) {   
                hasContacts = true ;
                //output.append("\n First Name:" + name); 
                // Store name in first array
                displayname.add(name) ;
                // Query and loop for every phone number of the contact 
                Cursor phoneCursor = contentResolver.query(PhoneCONTENT_URI, null, Phone_CONTACT_ID + " = ?", new String[] { contact_id }, null); 
                while (phoneCursor.moveToNext()) { 
                    phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER)); 
                    // output.append("\n Phone number:" + phoneNumber); 
                    PhoneNumbers.add(phoneNumber)  ; // populate phone numbers array
                } 
                phoneCursor.close(); 
                // Query and loop for every email of the contact 
                Cursor emailCursor = contentResolver.query(EmailCONTENT_URI,    null, EmailCONTACT_ID+ " = ?", new String[] { contact_id }, null); 

                while (emailCursor.moveToNext()) { 

                    email = emailCursor.getString(emailCursor.getColumnIndex(DATA)); 
                    //output.append("\nEmail:" + email); 
                    Emails.add(email)  ; // populate phone numbers array
                } 

                emailCursor.close(); 

                /// convert All name listArray to array
                String[] contactNamesArr = displayname.toArray(new String[displayname.size()]);

                /// convert All Phone listArray to array
                String[] PhoneNumbersArr = PhoneNumbers.toArray(new String[PhoneNumbers.size()]);

                /// convert All Email listArray to array
               String[] contactEmailArr = Emails.toArray(new String[Emails.size()]);

                // Add Everything to Each contacts array
                OneContactRow[0] = contactNamesArr ;
                OneContactRow[1] = PhoneNumbersArr ;
                OneContactRow[2] = contactEmailArr ;

                // Add everything to master array
                MasterArray.add(OneContactRow) ;  //>> NOW WE HAVE ONE ROW OF USER CONTACT

             // Empty all array lists Before Looping for next contact
                displayname.clear();
                PhoneNumbers.clear();
                Emails.clear();

            } 
            // Store Each Contact in master array

        } 

    } 

    if(hasContacts == true ){
         BigMasterArr = MasterArray.toArray(new String[MasterArray.size()]);
    }

    return BigMasterArr ; //<< 4D ARRAY
}

是的,一个四维数组你真的应该创建一个或多个类,而不是像这样使用数组that@fge我是Java新手,所以这是我所知道的从设备中获取所有联系人并将其放入数组中的唯一方法,这样我就可以发布到服务器。你有更好的主意吗?如果您首先为数据创建一个合适的结构,例如,只是一个地图列表,其中每个地图都有DisplayName=>name、PhoneNumber=>number、Email=>Email,那么大家都会感觉更好。看起来您至少只存储了这3个属性。可以使用Java的JSON库轻松地将其转换为JSON。例如,我提到的@DaniëlKnippers是java新手,对地图不是很在行,任何获取所有设备联系人并发送到服务器的简单方法都将受到欢迎。