Java 从给定映射到json字符串(或JSONObject)

Java 从给定映射到json字符串(或JSONObject),java,json,map,Java,Json,Map,在Java中,我通过post传递了这些键/值对(例如): 我必须创建以下json: [{"cssClass":"input_text","required":"checked","values":"First Name"},{"cssClass":"input_text","required":"checked","values":"Last Name"},{"cssClass":"textarea","required":"undefined","values":"Bio"},{"cssCla

在Java中,我通过post传递了这些键/值对(例如):

我必须创建以下json:

[{"cssClass":"input_text","required":"checked","values":"First Name"},{"cssClass":"input_text","required":"checked","values":"Last Name"},{"cssClass":"textarea","required":"undefined","values":"Bio"},{"cssClass":"checkbox","required":"undefined","title":"What's on your pizza?","values":{"2":{"value":"Extra Cheese","baseline":"undefined"},"3":{"value":"Pepperoni","baseline":"undefined"},"4":{"value":"Beef","baseline":"undefined"}}},{"cssClass":"radio","required":"undefined","title":"Do you like pizza?","values":{"2":{"value":"Yes","baseline":"checked"},"3":{"value":"No","baseline":"undefined"}}},{"cssClass":"select","required":"checked","multiple":"checked","title":"Select a pizza type:","values":{"2":{"value":"Margherita","baseline":"checked"},"3":{"value":"Napoli","baseline":"undefined"},"4":{"value":"Marinara","baseline":"undefined"}}}]
我怎么办


我没有成功地解析键,对属于同一JSONObject的元素进行分组。

您可以使用库来实现这一点。它不支持嵌套映射的序列化(我假设您的输出表示嵌套映射)。您可以按照中的说明编写自定义序列化程序/反序列化程序或创建自己的序列化方法。您可以执行以下操作:

JSONArray jsonItems = new JSONArray();

for (int i = 0; i < frmb.size(); i++) {  

JSONObject json = new JSONObject();  
json.put("cssClass", frmb[i][cssClass]);  
json.put("required",frmb[i][required]);  
//put json object to json array  
jsonItems.put(json);   
}
JSONArray jsonims=new JSONArray();
对于(inti=0;i

查看更多详细信息

我通过解析键和使用两个临时哈希表构建JSONObject来解决问题。

这很好。这看起来像是一个递归的例子。你试过什么?@pst:其实我在想一些递归的东西,但我没有试过。我想我必须解析键,但是我必须创建什么“结构”才能使用org.json来构建json?只要在重复时将其导入适当的“JSONObject”;org.json版本已经足够了。看起来像是“is numeric key”或“values”,它们创建了一个嵌套的JSONObject(recurse),否则,只需映射到当前级别的属性即可。是的,那么如何将其扩展到嵌套结构上呢?由于post传递的每个元素都没有JSONObject,而且键是字符串,我想我必须以某种方式解析键并构建JSONArray。
JSONArray jsonItems = new JSONArray();

for (int i = 0; i < frmb.size(); i++) {  

JSONObject json = new JSONObject();  
json.put("cssClass", frmb[i][cssClass]);  
json.put("required",frmb[i][required]);  
//put json object to json array  
jsonItems.put(json);   
}