C0iL
C0iL

Reputation: 39

Dartlang: How to get key and values from json?

I'm having a little problem and couldn't figure it out. I created a table with checkbox and it's working and can save to json without a problem. Now i wanna make my checkboxes have their default values set from json data when the page loads (to make it easier to edit). Anyway here is my code:

//row index
var index = 0;

//gets full info of student
var responseStudent = rpc.call('db.findOne', ['StudentAnket', {
    '_id': '${this.objId}'
  }]);
result = responseStudent['result'];

//gets info needed for my table
//{anket: true, request: true, statement: false, etc...}
var resultMat = result['listmaterial'];

//materials is a list which contains id, name of rows
materials.forEach((m) {

  //creating table body
  index = index + 1;
  tbody.append(new Element.tr()
      ..append(new TableCellElement()..text = index.toString())
      ..append(new TableCellElement()..append(new LabelElement()
              ..text = m['name']
              ..setAttribute('for', m['id'])))
      ..append(new TableCellElement()..append(new InputElement()
              ..id = m['id']
              ..type = "checkbox"
              ..checked = "VALUE TAKEN FROM JSON")));
});

So how can i get keys and values from resultMat and set checked property for each checkbox?

Edit:

  List materials = [{
  'id': 'anket',
  'name': 'Student anket'
}, {
  'id': 'request',
  'name': 'Request'
}, {
  'id': 'statement',
  'name': 'Statement'
}, {
  'id': 'marklist',
  'name': 'Mark List'
}];

Upvotes: 1

Views: 935

Answers (1)

Günter Zöchbauer
Günter Zöchbauer

Reputation: 658037

Your information how your materials structure looks like is not clear. A List has only one value not two ('id, 'name of rows'). First you have to ensure that your JSON is not a String but a Dart data structure (Lists, Maps, values).

You can take a look at the answers to this questions to learn how this works Dart Parse JSON into Table

Then you should be able to access the value like

..checked = resultMat[m['id']] ;

Upvotes: 1

Related Questions