我的第一篇在這裏:)iPhone到Android的NSMutableDictionary的NSArray到HashMap的ArrayList中
我有一個暑假作業做了一些編碼的 - 我絕對不是一個職業球員,但!
我將此iPhone應用程序轉換爲Android,即將完成。只是掙扎轉換這一塊。
'參與者'數組通過JSON傳遞給服務器。 這對我來說,在Android中,看起來像是一個HashMap的數組。那是對的嗎?
這裏是客觀C:
NSMutableArray *participants = [[NSMutableArray alloc] init];
NSArray *listOfParticipants = [[game getListOfGameParticipants]allValues];
for (Player *playerObj in listOfParticipants)
{
NSMutableDictionary *playerToAdd = [[NSMutableDictionary alloc] init];
if ([playerObj.email length] == 0) {
[playerToAdd setValue:playerObj.phoneNumber forKey:@"Id"];
}
else
{
[playerToAdd setValue:playerObj.email forKey:@"Id"];
}
[playerToAdd setValue:playerObj.firstName forKey:@"FirstName"];
[playerToAdd setValue:playerObj.lastName forKey:@"LastName"];
[playerToAdd setValue:playerObj.phoneNumber forKey:@"PhoneNumber"];
[participants addObject:playerToAdd];
[playerToAdd release];
}
的getListOfGameParticipants是:
- (NSDictionary*) getListOfGameParticipants
{
return participants ;
}
和Android的代碼,我已經嘗試是:
ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> playersObject = new HashMap<String, String>();
playersObject.put("Id", "[email protected]");
playersObject.put("FirstName", "Test Firstname");
playersObject.put("LastName", "Test Surname");
playersObject.put("PhoneNumber", "Test Number");
list.add(playersObject);
json.put("ParticipantIds", list);
請幫助:)
編輯:它不起作用。服務器報告回:
The server encountered an error processing the request. The exception message is 'Expecting state 'Element'.. Encountered 'Text' with name '', namespace ''. '. See server logs for more details.
預期的數據類型是:
[DataMember]
public Player[] ParticipantIds { get; set; }
編輯:進一步更新:
現在我有我的包含HashMap解析到一個JSON字符串數組中的好形式。我需要將該JSON字符串解析爲JSONObject並將該JSONObject放入JSONArray中。
下面的代碼不起作用:
Map<String, String> playersObject = new HashMap<String, String>();
playersObject.put("PhoneNumber", "TestNumber");
playersObject.put("Id", "[email protected]");
playersObject.put("FirstName", "Test Firstname");
playersObject.put("LastName", "Test Surname");
ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
list.add(playersObject);
String jsonValue = org.json.simple.JSONValue.toJSONString(list);
JSONObject hashMapObject = new JSONObject();
hashMapObject.getString(jsonValue);
JSONArray hashMapArray = new JSONArray(jsonValue);
hashMapArray.put(hashMapObject);
它給人的錯誤:
org.json.JSONException: No value for [{"LastName":"Test Surname","FirstName":"Test Firstname","Id":"[email protected]","PhoneNumber":"TestNumber"}]
幫助!
那麼問題是什麼?如果它起作用,它會起作用,如果它沒有告訴我們什麼是錯的,我們可以找出如何解決它。我是一名iOS開發人員,因此我不知道Android代碼是否正確,但對我來說看起來不錯。 –
它不起作用。服務器報告「服務器在處理請求時遇到錯誤,異常消息是'Expecting state'Element'..遇到'Text',名稱爲'',命名空間爲'。'。請參閱服務器日誌以獲取更多詳細信息。 – JaboJG
服務器預期的JSON是: [DataMember] public Player [] ParticipantIds {get;組; } – JaboJG