2016-03-05 77 views
0

我有我的Android Java代碼必須傳遞一些數組和一些多維數組到PHP服務器。不幸的是,我沒有訪問PHP服務器的權限。從Android到PHP傳遞數組和多維數組

這裏的PHP服務器API:

$result= array(
    "username" => "admin", 
    "password" => "admin", 
    "hobbies" => array(
       "1" => "science" 
    ), 
    "skills" => array(
       "1" => array(
         "Boxing" => "Yes" 
        ) 
    ) 
); 

這裏是我的Android的Java代碼:

final String hobbies[] = {"science"}; 
final String skills[][] = {{"Boxing"},{"Yes"}}; 

@Override 
protected Map<String, String> getParams() { 
       Map<String, String> jParams= new HashMap<String, String>(); 

JSONArray arrHobbies = new JSONArray(); 
JSONArray arrSkills = new JSONArray(); 
arrHobbies.put(hobbies[0]); 
arrSkills.put(skills[0][0]); 

jParams.put("username", "admin"); 
jParams.put("password", "admin"); 
jParams.put("hobbies",arrHobbies.toString(); 
jParams.put("skills",arrSkills.toString(); 

return jParams; 
}}; 

然後,我用這個代碼來看看data've被髮送方式。

Log.d("Response : ", jParams.toString()); 

這表明這對Android日誌:

{password=admin, username=admin, hobbies=["science"], skills=[["275]]} 

UPDATE 這裏的哈希值,當我調試代碼:

0 = {[email protected]} "hobbies" -> "{"1":"1"}" 
1 = {[email protected]} "password" -> "admin" 
2 = {[email protected]} "username" -> "admin" 
3 = {[email protected]} "skills" -> "{"1":{"Boxing":"Yes"}}" 

我永遠不會成功與溝通PHP服務器API。 請幫我看看我錯在哪裏或錯在哪裏。

+0

它是什麼應該登錄?因爲那正在記錄你正在創建的內容?我懷疑你不理解什麼'技能[] []'實際上創造 –

回答

1

有一個庫如何調用GSON,在因特網上搜索它 它是解析String到Json和Json到String的最快和最簡單的方法。

+1

嗨,先生,謝謝你的回答,我會保留這個備份計劃的答案,因爲我有超過5個活動,我會更喜歡如果我從JSON獲得解決方案 – Webster

+0

這是最簡單的方法,相信我。 GSON是最強大的解決方案 – Ashkan

+0

我會給它一個嘗試:) – Webster

0

希望這可以幫助你:

@覆蓋 保護地圖getParams()方法{

Map<String, String> jParams = new HashMap<String, String>(); 

    JSONArray arrHobbies = new JSONArray(); 
    JSONArray arrSkills1 = new JSONArray(); 
    JSONArray arrSkills2 = new JSONArray(); 

    arrHobbies.put("science"); 
    arrSkills1.put("Boxing"); 
    arrSkills1.put("Yes"); 

    arrSkills2.put(arrSkills1); 


    jParams.put("username", "admin"); 
    jParams.put("password", "admin"); 
    jParams.put("hobbies", arrHobbies.toString()); 
    jParams.put("skills", arrSkills2.toString()); 

    return jParams; 
} 
1

我覺得你的問題是,在PHP 關聯數組代表JSON對象在你的JSON字符串,所以你可能應該發送這樣的東西到你的PHP服務器API:

{ 
    "password": "admin", 
    "username": "admin", 
    "hobbies":{ 
     "1": "science" 
    }, 
    "skills": { 
     "1": { 
      "Boxing": "Yes" 
     } 
    } 
} 

在這裏,我不能100%肯定,它依賴於你的服務器上執行,但要實現從上面輸出的JSON,你getParam()不只應該是這樣的:

protected String getParams() { 
    JSONObject jParams = new JSONObject(); 

    try { 
     JSONObject arrHobbies = new JSONObject(); 
     arrHobbies.put("1", "science"); 


     JSONObject boxing = new JSONObject(); 
     boxing.put("Boxing", "Yes"); 

     JSONObject arrSkills = new JSONObject(); 
     arrSkills.put("1", boxing); 


     jParams.put("username", "admin"); 
     jParams.put("password", "admin"); 

     jParams.put("hobbies", arrHobbies); 
     jParams.put("skills", arrSkills); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    return jParams.toString(); 
} 
+0

嗨,謝謝你的回答,我可以問你一些問題嗎?密碼= admin(Android)和「密碼」是否相同:「admin」(PHP服務器) – Webster

+0

不一樣。 '「password」:「admin」'是key =>值的json表示,如果你在json中輸入password = admin,它將會失效。 http://pro.jsonlint.com/這裏是檢查json有效性的好工具。您的PHP服務器可能會嘗試使用[此功能](http://php.net/manual/en/function.json-decode.php)來解碼您的json。這裏也是我如何得到你服務器可能要求的json:[LINK](http://sandbox.onlinephpfunctions.com/code/77e2adbd1580fe43e13dcaa77eb90926fb904fcd) – varren

+0

嗨,你介意看看我上面編輯的帖子,我發佈了哈希值當我調試代碼。格式是否正確?因爲我仍然得到了錯誤 – Webster