ここに私の最初の投稿:)
私は夏の仕事で少しコーディングをしています-私はまだプロではありません!
このiPhoneアプリをAndroidに変換していますが、ほぼ完了しています。この作品を変換するのに苦労しています。
'participants'の配列は、JSONを介してサーバーに渡されます。これは、Androidでは、HashMapの配列のように見えます。あれは正しいですか?
これがObjectiveCです。
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", "test@test.net");
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; }
編集:さらなる更新:
これで、ハッシュマップの配列が適切な形式のJSON文字列に解析されました。そのJSON文字列をJSONObjectに解析し、そのJSONObjectをJSONArrayに配置する必要があります。
次のコードは機能しません。
Map<String, String> playersObject = new HashMap<String, String>();
playersObject.put("PhoneNumber", "TestNumber");
playersObject.put("Id", "test@test.net");
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":"test@test.net","PhoneNumber":"TestNumber"}]
ヘルプ!