Uso Gson en java para crear salida json, pero Gson no me permite poner funciones de javascript en el json. Entonces, esto es lo que hago: use etiquetas de reemplazo para los lugares donde desea colocar el código (como una de las respuestas anteriores). A continuación, obtener el texto de la JSON, reemplace las etiquetas, y luego guardar el texto a su archivo JSON:
Map<String, String> dynamicDates = new HashMap<>();
dynamicDates.put("d1", "new Date()");
dynamicDates.put("d2", "new Date(2015, 0, 1, 9, 30)");
dynamicDates.put("d3", "new Date(2015, 0, 1, 12, 30)");
JsonObject json = new JsonObject();
JsonObject root = new JsonObject();
JsonObject level_1_A = new JsonObject();
JsonObject level_1_B = new JsonObject();
json.add("root", root);
root.add("level_1_A", level_1_A);
root.add("level_1_B", level_1_B);
level_1_A.addProperty("d1", "${d1}");
level_1_A.addProperty("d2", "${d2}");
level_1_B.addProperty("d3", "${d3}");
StringBuilder sb = new StringBuilder();
new GsonBuilder().setPrettyPrinting().create().toJson(json, sb);
String str = sb.toString();
for (String key : dynamicDates.keySet()) {
str = str.replace("\"${" + key + "}\"", dynamicDates.get(key));
}
String jsonText = str;
String javascriptText = "var myJson = " + str + ";";
System.out.println(jsonText);
System.out.println(javascriptText);
Así que no queda nada por hacer en cuanto al consumo en el uso de este JSON. Y la primera salida es:
{
"root": {
"level_1_A": {
"d1": new Date(),
"d2": new Date(2015, 0, 1, 9, 30)
},
"level_1_B": {
"d3": new Date(2015, 0, 1, 12, 30)
}
}
}
Mi uso de JSON es generalmente guardarlo como Javascript, con una asignación, por lo que este ha estado trabajando para mí.
¿De dónde viene el archivo json y qué vas a hacer con su contenido? ¿Simplemente contiene los valores que va a usar dentro de su código de JavaScript o también va a generar resultados (como HTML) a partir de los datos? – Julian
Necesito obtener la fecha y tengo que realizar algunos cálculos en el lado html –
Realmente no entiendo su problema. Leí los comentarios que hizo, pero ¿podría especificar un poco más cuál es su problema? Quizás un ejemplo, por qué lo necesitas. - Gracias – Neysor