我试图使用GSON解析我的JSON字符串,从一个简单的JSON字符串中提取key:value对,并将其加载到映射中。到目前为止,我使用org.json.simple.parser.jsonParser
来完成该操作。现在我正在尝试使用GSON做同样的事情。
下面是我的json字符串JSONStringA
-
{"description":"Hello World.","hostname":"abc1029.dc3.host.com","ipaddress":"100.671.1921.219","hostid":"/tt/rt/v2/dc3/111","file_timestamp":"20140724","software_version":"v13","commit_hash":"abcdefg"}
现在我需要序列化上面的JSON字符串,从JSON字符串中提取以下字段,并将其作为键值对放在map m
中。在映射中,它应该是description
作为键,hello world
作为值。其他人也是如此。
public static final Set<String> MAPPING_FIELDS = new HashSet<String>(Arrays.asList(
"description", "hostname", "ipaddress", "hostid", "software_version"));
private final static JSONParser parser = new JSONParser();
parseJSONData(jsonstringA, MAPPING_FIELDS);
public Map<String, String> parseJSONData(String jsonStr, Set<String> listOfFields) {
Map<String, String> m = new HashMap<String, String>();
try {
Object obj = parser.parse(jsonStr);
org.json.simple.JSONObject jsonObject = (org.json.simple.JSONObject) obj;
if (jsonObject != null) {
for (String field : listOfFields) {
String value = (String) jsonObject.get(field);
m.put(field, value);
}
}
} catch (ParseException e) {
// log exception here
}
return m;
}
我在这里如何使用GSON来做同样的事情?
这很简单。只需创建一个POJO,该POJO具有与JSON字符串中使用的变量相同的变量。
在GSON#FromJSON的Java文档中查看(阅读器,键入)
示例代码:
class ClientDetail {
private String description;
private String hostname;
private String ipaddress;
private String hostid;
private String file_timestamp;;
private String software_version;
private String commit_hash;
// getter & setter
}
BufferedReader reader = new BufferedReader(new FileReader(new File("json.txt")));
ClientDetail data = new Gson().fromJson(reader, ClientDetail.class);
您可以将其转换为map
,也可以使用TypeToken
将其转换为预期的类型。
示例代码:
BufferedReader reader = new BufferedReader(new FileReader(new File("json.txt")));
Type type = new TypeToken<Map<String, String>>() {}.getType();
Map<String, String> data = new Gson().fromJson(reader, type);
我需要得到这个json字符串的Works数组: 我试试这个: 但是不要让任何人。。怎么了? PD:Work是一个具有价格、代码和名称值的类。
问题内容: 所有,我都有以下输出/字符串(它是JIRA API的响应): 我用于遍历元素并获取值。我在下面的“嵌套对象”示例中编写了类 http://www.javacreed.com/gson-deserialiser- example/ 我能够获得到第二级的元素值。例如:在此级别之前,我能够获得的值以及其他值。我如何获得的价值? 我应该如何构造我的解串器和类。请协助。谢谢。 问题答案: 试试这
问题内容: 我试图解析JSON字符串“ {‘test’:‘100.00’}”并使用GSON库获取值:100.00。我的代码如下所示: 我的结果看起来像这样:“ 100.00”,但是我只需要100.00(不带引号)即可。如何归档? 问题答案:
问题内容: 我的下面的代码当机(调试错误!R6010 abort()已被调用)。你能帮助我吗?我也想知道如何从字符串值初始化json对象。 问题答案: 您好,这很简单: 1-您需要一个CPP JSON值对象(Json :: Value)来存储数据 2-使用Json Reader(Json :: Reader)读取JSON字符串并解析为JSON对象 3-做你的东西:) 这是执行这些步骤的简单代码:
我的后端使用Springboot和Gson。我有这两个类的多对多关系: 订单类 产品类别 这是我用来向restendpoint提供数据的服务 以下是回应: 我的目标是反序列化/转义String属性。 我尝试过创建一个类并使用注释,但据我所知,当您需要为反序列化提供自定义行为时使用此注释,我示例中的JSON字符串非常简单,我不需要任何特定的逻辑。
问题内容: 我有数据类/表“ User”,其中有“ preferences”列 首选项类型为TEXT,我在其中存储JSON。 所以价值是 如何使用一些注释将其包装起来,以便像 或无需包装到数据对象中 我想可能会有一些Jackson注释可以添加到字段中,例如 我对JPA相当陌生,文档非常丰富。 我相信我的情况很普遍。谁能举任何例子? 问题答案: 老实说,我认为最好的解决方案是为属性创建一个单独的表(