我想要以下json,其中List<form>
将包含form_id
,form_name
的列表,如何使用jsonobject转换它,我没有得到正确的json输出。请帮我解决一下这个。
JSON:
{
"forms": [
{ "form_id": "1", "form_name": "test1" },
{ "form_id": "2", "form_name": "test2" }
]
}
以上是我需要它的json结构列表。其中id,name是来自表单对象的列表
public static JSONObject getJsonFromMyFormObject(List<Form> form) {
JSONObject responseDetailsJson = new JSONObject();
JSONArray jsonArray = null;
System.out.println(form.size());
for (int i = 0; i < form.size(); i++) {
JSONObject formDetailsJson = new JSONObject();
formDetailsJson.put("form_id", form.get(i).getId());
formDetailsJson.put("form_name", form.get(i).getName());
jsonArray = new JSONArray();
jsonArray.add(formDetailsJson);
}
responseDetailsJson.put("form", jsonArray);
return responseDetailsJson;
}
此处面临的问题是不将输出作为列表
答案 0 :(得分:5)
原始问题中的代码接近于实现所描述的期望结果。只需将JSONArray
实例创建移到循环之外。
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class Foo
{
public static JSONObject getJsonFromMyFormObject(List<Form> form)
{
JSONObject responseDetailsJson = new JSONObject();
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < form.size(); i++)
{
JSONObject formDetailsJson = new JSONObject();
formDetailsJson.put("form_id", form.get(i).getId());
formDetailsJson.put("form_name", form.get(i).getName());
jsonArray.add(formDetailsJson);
}
responseDetailsJson.put("forms", jsonArray);
return responseDetailsJson;
}
public static void main(String[] args)
{
List<Form> forms = new ArrayList<Form>();
forms.add(new Form("1", "test1"));
forms.add(new Form("2", "test2"));
JSONObject jsonObject = getJsonFromMyFormObject(forms);
System.out.println(jsonObject);
}
}
class Form
{
String id;
String name;
Form(String i, String n)
{
id = i;
name = n;
}
String getId()
{
return id;
}
String getName()
{
return name;
}
}
答案 1 :(得分:2)
正确http://www.roseindia.net/tutorials/json/jsonobject-java-example.shtml会有所帮助。
根据Tushar的评论,这里是上述链接网站的摘录:
现在,在本部分中,您将学习如何在Java中使用JSON。 要在java中具有JSON功能,您必须具有JSON-lib。 JSON-lib也 需要关注“JAR”文件:
commons-lang.jar
公地beanutils.jar
公地collections.jar
公地logging.jar
ezmorph.jar
- 醇>
json-lib-2.2.2-jdk15.jar
JSON-lib是一个java库,用于将bean,集合,映射,java数组和XML转换为JSON和 然后将它们重新转换回bean,集合,地图和 其他。在这个例子中,我们将使用JSONObject类 创建JSONObject的对象,然后我们将打印这些对象 值。对于使用JSONObject类,我们必须导入以下包 “net.sf.json”。要在此对象中添加元素,我们使用了put() 方法。以下是FirstJSONJava.java的完整示例代码 如下:
<强> FirstJSONJava.java 强>
import net.sf.json.JSONObject;
public class FirstJSONJava
{
public static void main(String args[])
{
JSONObject object=new JSONObject();
object.put("name","Amit Kumar");
object.put("Max.Marks",new Integer(100));
object.put("Min.Marks",new Double(40));
object.put("Scored",new Double(66.67));
object.put("nickname","Amit");
System.out.println(object);
}
}
要运行此示例,您必须按照以下步骤操作:
将这些罐子添加到您的类路径
创建并保存FirstJSONJava.java
编译并执行它。