如何将包含逗号分隔的 json 值的单个字符串转换为单个 json 对象?

Posted

技术标签:

【中文标题】如何将包含逗号分隔的 json 值的单个字符串转换为单个 json 对象?【英文标题】:How to convert single String containing a comma separated json values into a single json object? 【发布时间】:2022-01-18 06:43:03 【问题描述】:

我得到了一些单一字符串的数据

""somekey": someValue, "someKey2": someValue, "someKey3": someValue"

如何使用 java 库将其作为单个 json 对象返回?

"somekey": someValue, "someKey2": someValue, "someKey3": someValue

我一直在尝试使用 ObjectMapper 类将值读入 List 但无法转换。

List<String> list = mapper.readValue(jsonString, new TypeReference<List<String>> () );

我可以选择像这样检索数组中的数据:

["somekey": someValue, "someKey2": someValue, "someKey3": someValue]

但我仍然无法将其转换为单个 json 对象响应

【问题讨论】:

如果你可以像数组一样检索数据,难道你不能直接将数组转换为字符串并将[]替换为,然后将该字符串转换为对象吗? 确定这是实际数据吗?因为如果是的话,首先去掉外面的双引号,然后遍历你的字符串,计算,当你在“深度”0处看到逗号时拆分。 您应该阅读:来自No, really, what is JSON? 的“JSON 作为字符串存在”,因为您的问题中没有任何类似于 JSON 字符串的内容。 【参考方案1】:
String jsonString = ""somekey": someValue, "someKey2": someValue, "someKey3": someValue"; 
Object object = new ObjectMapper().readValue(jsonString, Object.class);  

试试这个

【讨论】:

你能详细说明它是如何完成任务的吗【参考方案2】:

如果您有一个如下所示的 JSON 字符串:

String userJson = "['name': 'Alex','id': 1, "
            + "'name': 'Brian','id':2, "
            + "'name': 'Charles','id': 3]";

还有一个对应的POJO,如下所示:

public class User 

    private long id;
    private String name;
          
    @Override
    public String toString() 
        return "User [id=" + id + ", name=" + name + "]";
    

然后您可以使用库 GSON 将 JSON 字符串解析为用户对象数组:

Gson gson = new Gson(); 
 
User[] userArray = gson.fromJson(userJson, User[].class); 

【讨论】:

以上是关于如何将包含逗号分隔的 json 值的单个字符串转换为单个 json 对象?的主要内容,如果未能解决你的问题,请参考以下文章