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 return2
)
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."}
};