61

如何在Java中将通用列表转换为json。我有这样的类..

public class Output
{
    public int Keyname { get; set; }
    public Object  outputvalue{ get; set; }  //outvalue may be even a object collection
}

List<Output> outputList = new List<Output>();

我想在 Java 中将 outputList 转换为 json。转换后我会将它发送给客户端。

4

8 回答 8

139

为此使用 GSON 库。这是示例代码

List<String> foo = new ArrayList<String>();
foo.add("A");
foo.add("B");
foo.add("C");

String json = new Gson().toJson(foo );

这是 Gson 的 Maven 依赖项

<dependencies>
    <!--  Gson: Java to Json conversion -->
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.2</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

或者你可以直接从这里下载jar并放到你的类路径中

http://code.google.com/p/google-gson/downloads/detail?name=gson-1.0.jar&can=4&q=

要将 Json 发送到客户端,您可以使用 spring 或在简单的 servlet 中添加此代码

response.getWriter().write(json);

于 2013-01-09T05:50:30.873 回答
14

为此,您需要一个外部库。

JSONArray jsonA = JSONArray.fromObject(mybeanList);
System.out.println(jsonA);

Google GSON就是这样的库之一

您还可以在此处查看有关将 Java 对象集合转换为 JSON 字符串的示例。

于 2013-01-09T05:43:50.383 回答
6

jackson 提供了非常有用且轻量级的 API 来将 Object 转换为 JSON,反之亦然。请找到下面的示例代码来执行操作

List<Output> outputList = new ArrayList<Output>();
public static void main(String[] args) {
    try {
        Output output = new Output(1,"2342");
        ObjectMapper objectMapper = new ObjectMapper();
        String jsonString = objectMapper.writeValueAsString(output);
        System.out.println(jsonString);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
}

Jackson API 还有许多其他功能和不错的文档。您可以参考以下链接:https ://www.journaldev.com/2324/jackson-json-java-parser-api-example-tutorial ..

要包含在项目中的依赖项是

    <!-- Jackson -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.5.1</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.5.1</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.5.1</version>
    </dependency>
于 2018-05-10T14:58:09.200 回答
4

试试这个:

public void test(){
// net.sf.json.JSONObject, net.sf.json.JSONArray    

List objList = new ArrayList();
objList.add("obj1");
objList.add("obj2");
objList.add("obj3");
HashMap objMap = new HashMap();
objMap.put("key1", "value1");
objMap.put("key2", "value2");
objMap.put("key3", "value3");
System.out.println("JSONArray :: "+(JSONArray)JSONSerializer.toJSON(objList));
System.out.println("JSONObject :: "+(JSONObject)JSONSerializer.toJSON(objMap));
}

你可以在这里找到 API 。

于 2013-01-09T07:34:26.087 回答
3

查看谷歌 gson库。它提供了丰富的 api 来处理这个问题,并且使用起来非常简单。

于 2013-01-09T05:45:42.713 回答
3

从 Java2s 下载 java-json.jar 然后使用 JSONArray 构造函数

List myList = new ArrayList<>();    
JSONArray jsonArray = new JSONArray(myList);
System.out.println(jsonArray);
于 2018-05-10T14:39:41.983 回答
2

为了简单和结构良好,请使用 SpringMVC。就是这么简单。

@RequestMapping("/carlist.json")
public @ResponseBody List<String> getCarList() {
    return carService.getAllCars();
}

参考和信用:https ://github.com/xvitcoder/spring-mvc-angularjs

于 2015-08-28T15:23:27.617 回答
0

使用带有 setPrettyPrinting 和 disableHtml 的 GSONBuilder 以获得良好的输出。

String json = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().
                            create().toJson(outputList  );
                    fileOut.println(json);
于 2017-10-13T00:52:00.073 回答