private string[] mApiKeys = { "title", "description", "bookletImage", "iconImage", "photoImage", "bundles" };
public override JSONObject ToJSONObject()
{
JSONObject jsonObj = base.ToJSONObject();
jsonObj.Add(mApiKeys[0], new JSONValue(mTitle));
jsonObj.Add(mApiKeys[1], new JSONValue(mDescription));
JSONObject tempObj = new JSONObject();
tempObj.Add(mStringSource, new JSONValue(mBookletImageUrl));
jsonObj.Add(mApiKeys[2], new JSONValue(tempObj));
tempObj = new JSONObject();
tempObj.Add(mStringSource, new JSONValue(mIconImageUrl));
jsonObj.Add(mApiKeys[3], new JSONValue(tempObj));
tempObj = new JSONObject();
tempObj.Add(mStringSource, new JSONValue(mPhotoImageUrl));
jsonObj.Add(mApiKeys[4], new JSONValue(tempObj));
JSONArray array = new JSONArray();
foreach (ApiBundle bundle in mApiBundles)
{
array.Add(new JSONValue(bundle.ToJSONObject()));
}
jsonObj.Add(mApiKeys[5], new JSONValue(array));
return jsonObj;
}
public override void SerializeFromJSON(JSONObject jsonObj)
{
mID = jsonObj.GetString(mIdString);
mTitle = jsonObj.GetString(mApiKeys[0]);
mDescription = jsonObj.GetString(mApiKeys[1]);
if (jsonObj.GetObject(mApiKeys[2]) != null)
{
mBookletImageUrl = jsonObj.GetObject(mApiKeys[2]).GetString(mStringSource);
}
if (jsonObj.GetObject(mApiKeys[3]) != null)
{
mIconImageUrl = jsonObj.GetObject(mApiKeys[3]).GetString(mStringSource);
}
if (jsonObj.GetObject(mApiKeys[4]) != null)
{
mPhotoImageUrl = jsonObj.GetObject(mApiKeys[4]).GetString(mStringSource);
}
JSONArray bundlesArray = jsonObj.GetArray(mApiKeys[5]);
foreach (var arrayValue in bundlesArray)
{
ApiBundle bundle = new ApiBundle();
bundle.SerializeFromJSON(arrayValue.Obj);
mApiBundles.Add(bundle);
}
}
}
Wartosci ktore sa przyjowane tam rozne wartosci. int, string, bool, a nawet lista jakiegos obiektu. Nie podoba mi sie to ze jest [1][2][3] i tak sie zastanawiam jak mozna to zmienic. Myslalem nad Dictionary ktore nie ma okreslonego typu jezeli chodzi o value (nie pamietam nazwy, hashDictionary?), ale wtedy w sumie nie bede mial jak sprawdzic czy to jest lista tak latwo (a moze jest na to sposob?)
mozna wpisac po prostu tam stringi, ale czy nie da sie bardziej "fancy"?