How to make a dictionary of dictionaries in JSON? How to make a dictionary of dictionaries in JSON? json json

How to make a dictionary of dictionaries in JSON?


I believe your JSON would look something like:

var Types = {    NormalHR: {        Reinforcement: 0,        Weight: 100,        Message: 'Great! Your heart rate is in the zone.',        EnforcementSound: 'ding'    },    HighHR: {        Reinforcement: 1,        Weight: 100,        Message: 'Slow down. Your heart rate is too high!'    },    LowHR: {        Reinforcement: -1,        Weight: 100,        Message: 'Speed up. Low heart rate.'    }};

As @Balder says in their answer, you can then access use dictionary-style syntax, like:

  • Types['NormalHR']['Reinforcement']

You could also use property-accessor syntax, like:

  • Types.NormalHR.Reinforcement

The reason I didn't include the "type" of each item, is that you can easily infer it for building your grid - as follows:

  • typeof Types.NormalHR.Reinforcement (this will return "number")
  • typeof Types.NormalHR.Message (this will return "string")

Similarly, to get the counts - you can count the properties of a specific object. In modern browsers, try:

  • Object.keys(Types.NormalHR).length (this will return 2)

For older browsers, refer to other methods here: How to efficiently count the number of keys/properties of an object in JavaScript?

Hope this helps!


In objective C you can write:

NSDictonary *types = @{@"NormalHR": @{    @"Reinforcement": [NSNumber numberWithInt:0],    @"Weight": [NSNumber numberWithInt:100],    @"Message": @"Great! Your heart rate is in the zone.",    @"EnforcementSound": @"ding"},@"HighHR": @{    @"Reinforcement": [NSNumber numberWithInt:1],    @"Weight": [NSNumber numberWithInt:100],    @"Message": @"Slow down. Your heart rate is too high!"},@"LowHR": @{    @"Reinforcement": [NSNumber numberWithInt:-1],    @"Weight": [NSNumber numberWithInt:100],    @"Message": @"Speed up. Low heart rate."}

};


You dont have "dictionaries" in json, but you have key/value arrays which works pretty much like them.

In your code if you want to access:

Normal Cadence > Message you only must do:

Types["NormalCadence"]["Message"] 

Is similar to a .Net Dictionary, but is not exactly a Dictionary