Używam Gson w java do tworzenia plików json, ale Gson nie pozwala mi umieścić funkcji javascript w jsonie. Oto, co robię: Użyj tagów zastępujących dla miejsc, w których chcesz umieścić kod (jak jedna z wcześniejszych odpowiedzi). Następnie uzyskać tekst JSON, wymień tagi, a następnie zapisać tekst do pliku 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);
Więc nie ma nic do zrobienia po stronie wykorzystania w użyciu tego JSON. I pierwsze wyjście jest:
{
"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)
}
}
}
Moja wykorzystanie JSON jest zwykle zapisując go jako javascript z cesji, więc to pracuje dla mnie.
Skąd pochodzi plik json i co zamierzasz zrobić z jego zawartością? Czy zawiera tylko wartości, które będziesz używał w kodzie javascript, czy też będzie generował dane wyjściowe (takie jak HTML) z danych? – Julian
Potrzebuję uzyskać datę i wykonać pewne obliczenia w html stronie –
naprawdę nie dostaję twojego problemu. Czytałem komentarze, które napisałeś, ale czy mógłbyś podać nieco więcej o czym jest twój problem? Być może przykład, dlaczego tego potrzebujesz. - dziękuje – Neysor