JsonObject转object时候int变double了
时间: 2023-11-15 19:05:08 浏览: 61
在将JSON字符串转换为Java对象时,可能会出现类型转换的问题。在您的情况下,可能是因为JSON中的整数类型被解析为Java中的双精度浮点数类型(`double`)。
您可以尝试使用`getInt()`方法而不是`getDouble()`方法来获取JSON中的整数值。例如:
```java
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
// 定义一个POJO类
class Person {
String name;
int age;
}
// 将JSON字符串转换为Person对象
String json = "{\"name\":\"John\", \"age\":30}";
JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse(json).getAsJsonObject();
Person person = new Person();
person.name = jsonObject.get("name").getAsString();
person.age = jsonObject.get("age").getAsInt();
```
在上面的代码中,我们使用`getAsInt()`方法来获取JSON中的整数值,并将其设置为`Person`对象的`age`属性。
相关问题
gson JsonObject 转map
要将Gson的JsonObject转换成Map,可以使用Gson的自定义解析器来实现。你可以重写deserialize方法,将JsonElement解析成Map的形式。以下是一个示例代码:
```java
public Map<String, Object> gsonToMap(String strJson) {
Gson gson = new GsonBuilder()
.registerTypeAdapter(new TypeToken<Map<String, Object>>(){}.getType(),
new JsonDeserializer<Map<String, Object>>() {
@Override
public Map<String, Object> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
Map<String, Object> map = new HashMap<>();
JsonObject jsonObject = json.getAsJsonObject();
Set<Map.Entry<String, JsonElement>> entrySet = jsonObject.entrySet();
for (Map.Entry<String, JsonElement> entry : entrySet) {
map.put(entry.getKey(), entry.getValue());
}
return map;
}
}).create();
return gson.fromJson(strJson, new TypeToken<Map<String, Object>>() {}.getType());
}
```
在这个示例中,使用registerTypeAdapter方法注册了一个自定义的JsonDeserializer来解析Map。在deserialize方法中,我们将JsonElement解析成Map的形式,并将其返回。然后,使用gson.fromJson方法将字符串解析成Map对象。
这样,你就可以将Gson的JsonObject转换成Map了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Gson将json字符串转map导致int型被转换成double的采坑之旅](https://blog.csdn.net/weixin_34326179/article/details/91362141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
获取object中的值
获取 Object 中的值需要根据 Object 的具体类型来决定使用哪种方法。如果 Object 是一个基本类型(如 int、double 等),可以直接将其转换为对应的类型。如果 Object 是一个复合类型(如 JSONObject、JSONArray 等),则需要使用相应的方法进行解析。
例如,如果我们有一个包含 JSON 字符串的 Object 对象,可以先将其转换为字符串类型,然后使用 JSONObject 或 JSONArray 类进行解析,如下所示:
```
Object object = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
String jsonString = object.toString(); // 将 Object 转换为字符串
JSONObject jsonObject = new JSONObject(jsonString);
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
```
在这个例子中,我们首先将 Object 对象转换为字符串类型,然后使用 JSONObject 类解析 JSON 字符串,并获取其中的 "name" 和 "age" 值。注意,getString() 和 getInt() 方法都是根据对应的键获取值的方法,因此需要知道 Object 对象中具体的键名才能获取对应的值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)