Моя главная цель - извлечь информацию из файла JSON и манипулировать ею в памяти (пытаясь решить синтаксические проблемы в памяти).После этого проанализируйте обработанное значение в объекте с помощью com.google.gson.JsonParser и оставьте старый файл таким, каким он был в начале (с учетом синтаксических ошибок).
Мне удалось манипулировать файлом с помощью RandomAccessFileи проанализируйте его позже, используя «новый FileReader».Но после прогона кода я заметил, что «старый» файл был изменен, и это не должно иметь место.Я не хочу изменять сам файл, но содержимое и анализировать его в Object с помощью JsonParser или любого другого доступного Parser для этого.
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;
public class JsonLoggingParser {
public static final void main(String[] args) {
String path = "C:\\CEC\\Dev\\logs\\BIMBO\\2019-04-12asdf.json";
parseJsonLogFile(path);
}
public static void parseJsonLogFile(String filePath){
try {
File f = new File(filePath);
RandomAccessFile randomAccessFile = new RandomAccessFile(f, "rw");
randomAccessFile.seek(0);
randomAccessFile.write("[{".getBytes());
randomAccessFile.seek(f.length());
randomAccessFile.write("]".getBytes());
randomAccessFile.close();
JsonParser jsonParser = new JsonParser();
Object object = jsonParser.parse(new FileReader(f));
JsonArray jsonArray = (JsonArray)object;
System.out.println(jsonArray.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Вот так выглядит мой файл JSON:
{
"788ad1bc-e9c8-4be5-b5b6-26ba011dc40e-request": {
"date": "2019-04-15 10:28:58.943",
"url": "/BIMBO/credit",
"handleType": "request",
"status": "200",
"request": "Hello There",
"response": "",
"performanceDuration": "",
"principalID": "123456789"
}
},{
"788ad1bc-e9c8-4be5-b5b6-26ba011dc40e-response": {
"date": "2019-04-15 10:28:59.125",
"url": "/BIMBO/credit",
"handleType": "response",
"status": "422",
"request": "",
"response": "Hello Back",
"performanceDuration": "218.696979ms",
"principalID": ""
}
}
В основном мне нужно добавить «[» и «]» в начале / конце файла для решения проблемы синтаксиса.