我需要读取.json文件并在运行时更改字段。
问题出在我试图阅读时:
JSONObject jOb=null;
try {
jOb = new JSONObject(filePath);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(jOb.toString());
try {
jOb.put("responseType", "TESTicles");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(""+jOb);
我收到以下错误:“JSONObject文本必须以'{'为1 [字符2第1行]开头”
我认为问题可能是BOM标记,因为我的文件以'{'
开头这是一个示例(我的json文件的开头):
{
"base":{
"sites":{
"local":{
"name":"siteA",
"datasource":{
...
我需要删除BOM标记才能读取文件但是如何在不读取文件的情况下执行此操作?
我读过:
答案 0 :(得分:1)
假设您使用的是library defined at json.org,您的代码所做的就是将文件名视为JSON字符串,并尝试将其解释为JSON对象。
阅读文档时,您需要将文件作为输入流打开,将其作为参数传递给JSONTokener构造函数,该构造函数作为参数传递给JSONObject构造函数,如:
InputStream foo = new FileInputStream(filePath);
JSONTokener t = new JSONTokener(foo);
JSONObject obj = new JSONObject(t);
注意:以上未经测试甚至编译过。