Hello! Thanks for your inquiry.
The format of this response has been used for several years so to change it at this point would cause many errors for our clients. However, in situations like this, we have included the JsonFx library to help deserialize dynamic JSON objects with.
One way to deserialize the JSON items would be to include a DeserializeItems(string) method in your Data class to be able to store them in an array using JsonFx's JsonReader.Deserialize(string) method:
public List<Item> Items = new List<object>();
public void DeserializeItems(string jsonResponse)
{
var response = JsonReader.Deserialize<Dictionary<string, object>>(jsonResponse);
var data = response["data"] as Dictionary<string, object>;
var items = data["items"] as Dictionary<string, object>;
foreach (Dictionary<string, object> item in items.Values)
{
var newItem = new Item();
newItem.itemId = (string)item["itemId"];
newItem.defId = (string)item["boost_rapidfire"];
newItem.quantity = (int)item["quantity"];
// etc...
Items.Add(newItem);
}
}
Alternatively, you can also use JsonFx's JsonWriter.Serialize(object) method in the foreach loop to then be able to use Unity's JsonUtility to automatically map it as an Item.
Understandably, both methods have their own pros and cons. However, it should be able to get the job done in this case.
Hope this helps! Please let us know if you have further questions or inquiries about this.