【问题标题】:How to convert ArrayList<String> to JSON object using Jackson in Spring @ResponseBody如何在 Spring @ResponseBody 中使用 Jackson 将 ArrayList<String> 转换为 JSON 对象
【发布时间】:2013-05-15 01:30:09
【问题描述】:

服务器层会返回一个字符串值列表,比如

{"Bob", "Charlotte", "Johnson", "David"...}

现在我们需要将 List String 作为 Json 对象推送到前端,比如

[{id: "Bob"}, {id: "Charlotte"}, {id: "Johnson"}, {id: "David"...}]

[{name: "Bob"}, {name: "Charlotte"}, {name: "Johnson"}, {name: "David"...}]

任何标签都可以,我们只需要一个标签就可以使它成为 JSON 对象。默认情况下,杰克逊是否有东西可以转换字符串列表i.e. {string: "Bob"}?那会很甜蜜……

【问题讨论】:

  • 我们正在使用 Jackson 来转换对象列表(有时甚至是字符串)。默认情况下,它会自行将 List 转换为字符串数组。如下所述,如果您真的希望将其转换为名称/值对数组,则应返回具有一个 String name(或 id 或其他)属性的对象列表。
  • @Shadow Creeper 谢谢,太好了,但是如果转换后的字符串数组没有标签,那么前端如何识别值(作为JSON对象),特别想要一个标签处理列表?
  • 我们的前端是一个简单的网络应用程序。我们只是遍历列表。您可以根据需要对列表进行排序,或者添加、删除、修改列表。它只是一个数组,包含length 和所有内容。您可以执行正常的 for 循环并通过 resultArray[index] 引用它。
  • @Shadow Creeper,谢谢,这很有帮助!

标签: java json spring spring-mvc jackson


【解决方案1】:

最简单的方法是让您的控制器方法返回一个与您想要的 JSON 完全映射的结构 - 例如 List&lt;SomeObject&gt; 其中 SomeObject 是一个带有 String id 字段的类。

【讨论】:

  • 谢谢。就像你说的那样,我创建了一个内部类,其中只有一个 String 字段来保存值,然后列出了这个类对象。现在可以从前端识别出来了。
【解决方案2】:

这样做的方法是将您的字符串列表转换为新地图。

代码:

@ResponseBody
@RequestMapping("/mapping")
function mySpring()
{


            List<String> myStringList;
            Map<String,String> jsonMap= new LinkedHashMap<String,String>(); 
     // Use LinkedHashMap if you want to maintain order


    String key="id";        
     // Id or Name

            for (String myString: myStringList)
        {
        jsonMap.put(key,myString);

        }

return jsonMap;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2013-10-16
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    相关资源
    最近更新 更多