我的JSON字符串是这样的:
{
"100": {
"mode": 100,
"enabled": true,
"value": "someString"
},
"101": {
"mode": 101,
"enabled": false,
"value": "someString"
}
}
我实际上有课
class Mode {
@JsonProperty("mode")
long mode;
@JsonProperty("enabled")
boolean enabled;
@JsonProperty("value")
String value;
}
我尝试了
objectMapper.readValue(jsonString, Map.class);
但其通用映射以及数字将转换为Integer
类型而不是Long
类型。使用Mode
代替上面的Map
会引发异常。
Long
中的Map
?Map<String, Mode>
?我的项目专家中有杰克逊图书馆。
答案 0 :(得分:2)
您的密钥是Set shprng = sht.Shapes.Range(shape_index)
。它将为您工作。
String
已更新:
TypeReference<HashMap<String, Mode>> typeRef = new TypeReference<HashMap<String, Mode>>() {};
Map<String,Mode> map = objectMapper.readValue(jsonString,typeRef);
输出:
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class Mode {
@JsonProperty("mode")
long mode;
@JsonProperty("enabled")
boolean enabled;
@JsonProperty("value")
String value;
@Override
public String toString() {
return "Mode{" +
"mode=" + mode +
", enabled=" + enabled +
", value='" + value + '\'' +
'}';
}
public static void main(String[] args) throws IOException {
String json = "{\n"
+ " \"100\": {\n"
+ " \"mode\": 100,\n"
+ " \"enabled\": true,\n"
+ " \"value\": \"someString\"\n"
+ " },\n"
+ " \"101\": {\n"
+ " \"mode\": 101,\n"
+ " \"enabled\": false,\n"
+ " \"value\": \"someString\"\n"
+ " }\n"
+ "}";
ObjectMapper objectMapper = new ObjectMapper();
TypeReference<HashMap<String, Mode>> typeRef = new TypeReference<HashMap<String, Mode>>() {
};
Map<String, Mode> map = objectMapper.readValue(json, typeRef);
map.entrySet().forEach(entry-> System.out.println(entry.getKey() + " : " +entry.getValue() ));
}
}