2010-09-02 71 views

回答

3

没有自动的方式,因为JSON对象只包含数据,而在HTML中有标记语义(JSON和HTML之间没有1:1映射)。

0

在试图找到你的问题的答案,为我自己,我遇到了这个:Jemplate不知道这是否会帮助你。它确实帮了我。

0

这个代码显示任何JSON对象到HTML(使用org.json LIB):

/** 
* Get the JSON data formated in HTML 
*/ 
public String getHtmlData(String strJsonData) { 
    return jsonToHtml(new JSONObject(strJsonData)); 
} 

/** 
* convert json Data to structured Html text 
* 
* @param json 
* @return string 
*/ 
private String jsonToHtml(Object obj) { 
    StringBuilder html = new StringBuilder(); 

    try { 
     if (obj instanceof JSONObject) { 
      JSONObject jsonObject = (JSONObject)obj; 
      String[] keys = JSONObject.getNames(jsonObject); 

      html.append("<div class=\"json_object\">"); 

      if (keys.length > 0) { 
       for (String key : keys) { 
        // print the key and open a DIV 
        html.append("<div><span class=\"json_key\">") 
         .append(key).append("</span> : "); 

        Object val = jsonObject.get(key); 
        // recursive call 
        html.append(jsonToHtml(val)); 
        // close the div 
        html.append("</div>"); 
       } 
      } 

      html.append("</div>"); 

     } else if (obj instanceof JSONArray) { 
      JSONArray array = (JSONArray)obj; 
      for (int i=0; i < array.length(); i++) { 
       // recursive call 
       html.append(jsonToHtml(array.get(i)));      
      } 
     } else { 
      // print the value 
      html.append(obj); 
     }     
    } catch (JSONException e) { return e.getLocalizedMessage() ; } 

    return html.toString(); 
} 

,那么你只需要添加特定的CSS,如:

.json_object { margin:10px; padding-left:10px; border-left:1px solid #ccc} 
.json_key { font-weight: bold; }