2016-10-19 7 views
1

mustache.java를 사용하고 있는데 객체 대신 json 문자열을 연결하고자합니다. 아무도 왜이 문제에 직면했는지 확신 할 수 없습니다. 여기mustache.java는 json 문자열을 전달합니다

// works since an 'Example' object is passed in 
mustache.execute(new BufferedWriter(new FileWriter(objFile)), new Example()).flush(); 

// does not work since a json object is passed in directly 
JSONObject jsonObject = new JSONObject("{\n" + 
      " \"header\": \"Colors\",\n" + 
      " \"items\": [\n" + 
      "  {\"name\": \"red\", \"first\": true, \"url\": \"#Red\"},\n" + 
      "  {\"name\": \"green\", \"link\": true, \"url\": \"#Green\"},\n" + 
      "  {\"name\": \"blue\", \"link\": true, \"url\": \"#Blue\"}\n" + 
      " ],\n" + 
      " \"empty\": false\n" + 
      "}"); 
mustache.execute(new BufferedWriter(new FileWriter(objFile)), jsonObject).flush(); 

코드 : https://github.com/spullara/mustache.java/blob/master/example/src/main/java/mustachejava/Example.java

답변

1

나는이에 대한 해결책을 찾을 수 있었다!

json 문자열에서 HashMap을 만들고 mustache.execute 메서드에 전달할 수 있습니다.

//create map using gson  
Map<String,Object> gsonMap = new HashMap<String,Object>(); 
gsonMap = (Map<String,Object>) gson.fromJson(myJsonString, gsonMap.getClass()); 

//pass the hashmap instead of a class object 
mustache.execute(new BufferedWriter(new FileWriter(objFile)), gsonMap).flush();