Tôi sử dụng Gson trong java để tạo đầu ra json, nhưng Gson không cho phép tôi đặt các hàm javascript vào json. Vì vậy, đây là những gì tôi làm: Sử dụng thẻ thay thế cho những nơi bạn muốn đặt mã (như một trong các câu trả lời trước đó). Sau đó lấy văn bản của json, thay thế các thẻ và sau đó lưu văn bản vào tệp json của bạn:
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);
Vì vậy, không còn gì để thực hiện khi sử dụng json này. Và đầu ra đầu tiên là:
{
"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)
}
}
}
Việc sử dụng json của tôi thường lưu nó dưới dạng javascript với bài tập, vì vậy điều này đã làm việc cho tôi.
Tệp json đến từ đâu và bạn định làm gì với nội dung của nó? Liệu nó chỉ chứa các giá trị bạn sẽ sử dụng trong mã javascript của bạn, hoặc bạn sẽ tạo ra đầu ra (chẳng hạn như HTML) từ dữ liệu không? – Julian
Tôi cần lấy ngày và phải thực hiện một số tính toán ở bên html –
tôi không thực sự gặp vấn đề của bạn. Tôi đã đọc các bình luận bạn đã thực hiện, nhưng bạn có thể vui lòng nêu rõ hơn một chút về vấn đề của bạn không? Có lẽ một ví dụ, tại sao bạn cần điều đó. - thanks – Neysor