Motor JSON templating

Há algum motor JSON templating? Estou à procura de algo assim...

var template = {
  'sts': '%data1.sts%',
  'msg': '%data2.msg%'
};

var data1 = {
  'sts': 200
};

var data2 = {
  'msg': 'Hi!'
};

// render(template, [data sources]);
var response = render(template, [data1, data2]);

console.log(response);

Saída

{
  'sts': 200,
  'msg': 'Hi!'
}
Obrigado pela resposta!

Author: Latanmos, 2011-01-03

5 answers

Mantém as coisas simples.
function template(data) {

  var object = {
    'sts': data[0].sts,
    'msg': data[1].msg
  };

  return object;

}
 4
Author: Baggz, 2011-01-05 00:24:00
Se for de JSON para JSON, pode ficar com o Javascript e inverter a ordem de Tarefas.
var data1 = {
  sts: 200
};

var data2 = {
  msg: 'Hi!'
};

var template = {
  sts: data1.sts,
  msg: data2.msg
};

console.log( JSON.stringify(template) ); //--> {"sts":200,"msg":"Hi!"}

JSON.stringify está disponível na maioria dos navegadores modernos como um objeto nativo e metodo. Caso contrário, pode utilizar json2.js

Mas se precisar de um motor de modelo para converter o JSON para HTML, pode dar uma vista de olhos a puro.js

 1
Author: Mic, 2011-01-03 00:34:00
Olha para o bigode. Parece ser o que procuras.
 0
Author: karim79, 2011-01-02 21:37:53
Sim, existe um motor JSON a template. Não sei do que precisas, mas o JSON-templater é uma opção.

Modelo.json:

{
  "magic_key_{{magic}}": {
    "key": "interpolation is nice {{value}}"
  }
}

======== o seu código que usa o modelo ========

var object = require('json-templater/object');
var result = object(
  require('./template.json'),
  { magic: 'key', value: 'value' }
);

console.log(result);

/* should look something like this: 
{
  magic_key_key: {
    key: 'interpolation is nice value'
  }
}
*/
 0
Author: Stucco, 2017-07-07 15:03:59
Tenho estado muito feliz com o novo motor template do jQuery.

Http://api.jquery.com/category/plugins/templates/

Podes usar o jQuery.extend () para juntar os fragmentos de dados antes de preencher o modelo.
 -2
Author: chprpipr, 2011-01-02 23:47:52