[{"empNo":"2390","empName":"JAMES","projects":{"projectId":209,"projectName":"Z560"}}]
private static final ObjectMapper om = new ObjectMapper();
static {
om.configure(JsonGenerator.Feature.QUOTE_FIELD_NAMES, false);
om.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
om.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS,
true);
om.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
om.getSerializationConfig().setSerializationInclusion
(JsonSerialize.Inclusion.NON_NULL);
}
com.sun.jersey.spi.container.containerresponse mapMappableContainerException严重:MappableContainerException中包含的异常无法映射到响应,重新抛出到HTTP容器org.codehaus.jackson.JsonParseException:意外字符(“b”(代码98)):在[source:java.io.StringReader@1FEF0B44;行:1,列:2]处应为有效值(数字、字符串、数组、对象、“true”、“false”或“null”)
预期产出为
{"empNo":"2390","empName":"JAMES","projectId":"209","projectName":"Z560"}
有点冗长,可以优化。更多信息请参阅本文。
public static void main(String[] args) throws IOException {
String originalJson = "{\"empNo\":\"2390\",\"empName\":\"JAMES\",\"projects\":{\"projectId\":209,\"projectName\":\"Z560\"}}";
try {
JSONObject jsonObject = new JSONObject(originalJson);
Map<String, Object> map = getMap(jsonObject);
System.out.println("My Old Map => " + map);
Map<String, Object> newMap = new HashMap<String, Object>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getKey().equals("projects")) {
Map<String, Object> projectMap = (Map<String, Object>) entry.getValue();
for (Map.Entry<String, Object> entry1 : projectMap.entrySet()) {
newMap.put(entry1.getKey(), entry1.getValue());
}
} else {
newMap.put(entry.getKey(), entry.getValue().toString());
}
}
JSONObject jsonObject1 = new JSONObject(newMap);
System.out.println("My New Map => " + newMap);
System.out.println("Expected Json String => " + jsonObject1.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static Map getMap(JSONObject object) {
Map<String, Object> map = new HashMap<String, Object>();
Object jsonObject = null;
String key = null;
Object value = null;
try {
Iterator<String> keys = object.keys();
while (keys.hasNext()) {
key = null;
value = null;
key = keys.next();
if (null != key && !object.isNull(key)) {
value = object.get(key);
}
if (value instanceof JSONObject) {
map.put(key, getMap((JSONObject) value));
continue;
}
if (value instanceof JSONArray) {
JSONArray array = ((JSONArray) value);
List list = new ArrayList();
for (int i = 0 ; i < array.length() ; i++) {
jsonObject = array.get(i);
if (jsonObject instanceof JSONObject) {
list.add(getMap((JSONObject) jsonObject));
} else {
list.add(jsonObject);
}
}
map.put(key, list);
continue;
}
map.put(key, value);
}
} catch (Exception e) {
System.out.println(e);
}
return map;
}
输出
我的旧地图=>{projects={projectd=209,projectname=z560},empname=james,empno=2390}
}如果您运行该代码,您会发现它工作得很好。那么问题出在哪里?我必须在Oracle NoSQL数据库上执行同样的操作。了解与数据检索相关的任何部分并不重要,因为它们工作得很好,我已经测试过它们。代码非常相似: 我的目标是获得与第一段代码完全相同的结果。根据我的类tweet的属性,由''分隔的值字符串。 但是,这段代码被压缩在一个Jar文件中,并由数据库在记录的所有tweet上运行。我无法看到发生了什
我在数据库中有一个Json字符串,但在Java对象中转换时,它给出了以下错误:
嘿,我遇到了一个关于与jackson反序列化的问题,这里是我尝试过的和我得到的错误。 错误:com。fasterxml。杰克逊。果心JsonParseException:意外字符('}'(代码125)):应以双引号开始字段名 Java代码 我的JSON
问题内容: 我收到此错误: JSON.parse:意外字符 当我在firebug中运行以下语句时: 为什么会这样呢?JSON字符串对我来说似乎是正确的,我也使用JSHint对其进行了测试。在上述情况下,传递的对象是服务器响应,其内容类型设置为 问题答案: 您不是在解析字符串,而是在解析一个已经解析的对象:)
问题内容: 我有一个无法调试的JSON解析错误。代码如下: 和JSON: 在Firefox中,错误为“ SyntaxError:JSON.parse:意外字符”,在Chrome中为“未捕获的SyntaxError:意外令牌C” 有任何想法吗? 编辑:这在我的本地主机设置上工作正常。 * 问题答案: 如果服务器正在发送有效的JSON,则无需调用,因为jQuery在检索响应时会自动对其进行解析。我不知
我正在尝试将java绑定到一个Xamarin forms项目,该jar包含具有$的类名和具有$的变量名。我得到“意外字符$”错误。我试图通过编辑metadata.xml文件来解决这个问题。看来我做错了,请检查以下条目, 对于包含$的类名。我在用, 提前感谢,