【问题标题】:How to format data into specific JSON format如何将数据格式化为特定的 JSON 格式
【发布时间】:2014-02-21 23:55:11
【问题描述】:

这里需要一些逻辑方面的帮助——我正在尝试以特定方式(父子关系/树格式)格式化我的数据并转换为 json(我正在使用 gson)。但我似乎无法正确处理。下面是我能够制作的最接近的格式,在它下面有我希望它输出的格式。这需要作为哈希表返回。

我遇到的一个问题是将 [] 括号放在“孩子”之后。括号在第一个“孩子”之后出现,但后来没有出现。我的猜测是因为 [] 括号仅在我使用 HashSet 时出现。那么,也许将哈希集放入哈希集中可以解决这个特定问题?


我的代码在这里:

public class DendrogramPlaySheet extends BrowserPlaySheet {
public Hashtable processQueryData() {
          HashSet food = new HashSet();

          String[] var = wrapper.getVariables();

          for (int i=0; i<list.size(); i++){
                 LinkedHashMap foodType = new LinkedHashMap();
                 LinkedHashMap foodItem = new LinkedHashMap();
                 LinkedHashMap foodFlavor = new LinkedHashMap();

                 //this is a table of data that we get from a query
                 Object[] listElement = list.get(i);

                 //taking columns and putting them into the hashmap
                 foodType.put("name", listElement[0]);
                 foodItem.put("name", listElement[1]);
                 foodFlavor.put("name", listElement[2]);

                 foodItem.put("children", foodFlavor);
                 foodType.put("children", foodItem);

                 food.add(foodType);
          }

          Hashtable allHash = new Hashtable();

          allHash.put("name", "Food");
          allHash.put("children", food);
          return allHash;
   }

}


我的代码生成的内容:

{
   "name":"Food",
   "children":[
  {
     "name":"Italian",
     "children":{
        "name":"Pizza",
        "children":{
           "name":"Cheese"
        }
     }
  },
  {
     "name":"American",
     "children":{
        "name":"Hamburgers",
        "children":{
           "name":"Plain"
        }
     }
  },
  {
     "name":"Italian",
     "children":{
        "name":"Pasta",
        "children":{
           "name":"Pesto"
        }
     }
  },
  {
     "name":"Italian",
     "children":{
        "name":"Cannoli",
        "children":{
           "name":"Plain"
        }
     }
  },
  {
     "name":"Italian",
     "children":{
        "name":"Pizza",
        "children":{
           "name":"Pepperoni"
        }
     }
  },
  {
     "name":"Mexican",
     "children":{
        "name":"Burritos",
        "children":{
           "name":"Beef"
        }
     }
  }
   ]
}

我要输出的内容:

{
  "name":"Food",
  "children":[
  {
     "name":"Italian",
     "children":[
     {
        "name":"Pizza",
        "children":[
           {"name":"Pepperoni"},
           {"name":"Cheese"},
     ]
     },
     {
        "name":"Cannoli",
        "children":[
           {"name":"Plain"},
     ]
     },
     {
        "name":"Pasta",
        "children":[
           {"name":"Pesto"},
     ]
     },
     ]
  },
  {
     "name":"American",
     "children":[
     {
        "name":"Hamburgers",
        "children":[
           {"name":"Plain"},
           ]
     },
     ]
  },
  {
     "name":"Mexican",
     "children":[
     {
        "name":"Burritos",
        "children":[
           {"name":"Beef"},
     ]
     },
     ]
  }
]

}

【问题讨论】:

    标签: json hashtable gson


    【解决方案1】:

    我想你想要这样的东西

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.google.gson.Gson;
    
    public class DendrogramPlaySheet {
        public static void main(String[] args){
            Map m = new HashMap();
            m.put("name", "food");
    
            Map m3 = new HashMap();
            m3.put("name", "peperoni");
    
            Map m4 = new HashMap();
            m4.put("name", "cheese");
    
            List list2 = new ArrayList();
            list2.add(m3);
            list2.add(m4);
    
            Map m2 = new HashMap();
            m2.put("name", "pizza");
            m2.put("children", list2);
    
            List list = new ArrayList();
            list.add(m2);
    
            m.put("children", list);
    
            Gson gson = new Gson();
            System.out.println(gson.toJson(m));    
        }
    
    }
    

    生成

    {
       "name":"food",
       "children":[
          {
             "name":"pizza",
             "children":[
                {
                   "name":"peperoni"
                },
                {
                   "name":"cheese"
                }
             ]
          }
       ]
    }
    

    你看,“[”是 JSON 列表/数组的开头

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-06
      • 2019-02-21
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      相关资源
      最近更新 更多