jhartlep
Grünschnabel
[gelöst] Probleme beim Auslesen eines JSON-Objektes
Moin,
für eine mehrsprachige Website brauche ich innerhalb der Seite in einer JS-Variable die im JS verwendeten Strings in der jeweiligen Sprache.
Dazu habe ich mir folgende Lösung überlegt:
Nach dem Laden der Seite fordere ich über ein Ajax-Request (mit jQuery $.post) ein JSON-Objekt vom Server an. Serverseitig baue ich mir hier aus den ResourceFiles das entsprechende JSON-Objekt und schicke das wieder an den Client.
Soweit klappt auch alles. Hier die Ausgabe aus dem Firebug:
Jetzt habe ich jedoch das Problem, daß ich die Werte von z.B. javascript.test3 nicht ausgelesen bekomme. Erlaubt JSON keine Punkte im Namen?
Hier nochmal der Vollständigkeit der komplette Code:
JS: (in der getLanguage.jsp rufe ich die Methode getLanguage aus der entsprechenden Bean auf)
JAVA:
und noch ein Ausszug aus dem ResourceBundle
Moin,
für eine mehrsprachige Website brauche ich innerhalb der Seite in einer JS-Variable die im JS verwendeten Strings in der jeweiligen Sprache.
Dazu habe ich mir folgende Lösung überlegt:
Nach dem Laden der Seite fordere ich über ein Ajax-Request (mit jQuery $.post) ein JSON-Objekt vom Server an. Serverseitig baue ich mir hier aus den ResourceFiles das entsprechende JSON-Objekt und schicke das wieder an den Client.
Soweit klappt auch alles. Hier die Ausgabe aus dem Firebug:
Code:
{"javascript.test3":"TEST3","javascript.test2":"TEST2","javascript.test1":"TEST1","locale":"de_DE"}
Jetzt habe ich jedoch das Problem, daß ich die Werte von z.B. javascript.test3 nicht ausgelesen bekomme. Erlaubt JSON keine Punkte im Namen?
Hier nochmal der Vollständigkeit der komplette Code:
JS: (in der getLanguage.jsp rufe ich die Methode getLanguage aus der entsprechenden Bean auf)
Code:
var url = "getLanguage.jsp";
var data = {};
var callback = function(data) {
alert(data.locale);
}
var type = "json";
$.post(url,data,callback,type);
JAVA:
Code:
public JsonObject getLanguage() {
JsonObject jsonObject = new JsonObject();
Locale locale = Locale.GERMANY;
String resource = "language_de";
ResourceBundle bundle = ResourceBundle.getBundle(resource, locale);
Enumeration<String> keys = bundle.getKeys();
while(keys.hasMoreElements()) {
String key = keys.nextElement();
if(key.contains("javascript") {
jsonObject.addProperty(key, bundle.getString(key));
}
}
jsonObject.addProperty("locale", locale.toString());
return jsonObject;
}
und noch ein Ausszug aus dem ResourceBundle
Code:
### javascript
javascript.test1=TEST1
javascript.test2=TEST2
javascript.test3=TEST3
Zuletzt bearbeitet: