我正在使用 jackson 将 jsonobject 转换为 map。但我遇到以下错误:
org.codehaus.jackson.JsonParseException: Unexpected character ('h' (code 104)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
如何解决这个问题?谁能帮我解决这个问题...
我的代码:
public class DataParse {
public static void main(String a[]){
String FILEPATH = "C:/SimpleMapping.json";
Map<String,Object> resultMap = new HashMap<String,Object>();
ObjectMapper mapperObj = new ObjectMapper();
System.out.println("Input Json: "+FILEPATH);
try {
resultMap = mapperObj.readValue(new File(FILEPATH),
new TypeReference<HashMap<String,Object>>(){});
System.out.println("Output Map: "+resultMap);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我的 simple.json:
{
"routings": {
"routing1": {
"targetCollection-name": "EmployeeData",
"sourcetables-data": {
"Employee": [{
"name": "employeeId",
"sourceDataType": "number",
"targetField": "employeeId",
"targetDataType": "double"
}, {
"name": "firstName",
"sourceDataType": "varchar2",
"targetField": "firstName",
"targetDataType": "string"
}, {
"name": "lastName",
" sourceDataType": "varchar2",
"targetField": "lastName",
"targetDataType": "string"
}, {
"name": "contactNumber1",
"sourceDataType": "number",
"targetField": "contactNumbers",
"targetDataType": "array"
}],
"department": [{
"name": "departmentNumber",
"sourceDataType": "number",
"targetField": "departmentNumber",
"targetDataType": "double"
}, {
"name": "departmentType",
"sourceDataType": "number",
"targetField": "departmentType",
"targetDataType": "double"
}, {
"name": "startDate",
"sourceDataType": "timestamp",
"targetField": "startDate",
"targetDataType": "date"
}],
"foriegnkey": [{
"parentTable": "Employee",
"parentkey": "employeeId",
"childTable": "department",
"childKey": "empId"
}]
}
}
}
}
我有 simple.json 文件。现在尝试将此 jsonObject 转换为 map。但面临上述错误。
最佳答案
这是您的代码,但也包含必要的导入。请注意,我使用了双反斜杠(对 Windows 路径中的反斜杠进行转义),而您使用的是常规正斜杠。否则代码不变。它编译并产生预期的输出。
package json2;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
public class JSON {
public static void main(String a[]){
String FILEPATH = "D:\\User\\Documents\\Eclipse\\JSON2\\simplemapping.txt";
Map<String,Object> resultMap = new HashMap<String,Object>();
ObjectMapper mapperObj = new ObjectMapper();
System.out.println("Input Json: "+FILEPATH);
try {
resultMap = mapperObj.readValue(new File(FILEPATH),
new TypeReference<HashMap<String,Object>>(){});
System.out.println("Output Map: "+resultMap);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
-
Input Json: D:\User\Documents\Eclipse\JSON2\simplemapping.txt
Output Map: {routings={routing1={targetCollection-name=EmployeeData, sourcetables-data={Employee=[{name=employeeId, sourceDataType=number, targetField=employeeId, targetDataType=double}, {name=firstName, sourceDataType=varchar2, targetField=firstName, targetDataType=string}, {name=lastName, sourceDataType=varchar2, targetField=lastName, targetDataType=string}, {name=contactNumber1, sourceDataType=number, targetField=contactNumbers, targetDataType=array}], department=[{name=departmentNumber, sourceDataType=number, targetField=departmentNumber, targetDataType=double}, {name=departmentType, sourceDataType=number, targetField=departmentType, targetDataType=double}, {name=startDate, sourceDataType=timestamp, targetField=startDate, targetDataType=date}], foriegnkey=[{parentTable=Employee, parentkey=employeeId, childTable=department, childKey=empId}]}}}}
关于java - 如何将 jsonobject 转换为 hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35678398/