powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Пробел между json в выходном файле.
6 сообщений из 6, страница 1 из 1
Пробел между json в выходном файле.
    #39592488
AlexGru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Есть исходный json, где много строк - однотипных событий.
Суть задачи в том чтобы разложить в несколько файлов json. Каждое событие в свой файл.

Вот фрагмент кода
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
public void load_source_json(String src_json_file_path,
			                     String app_load_file_path){
		 try{
		    JsonFactory f = new JsonFactory();
	        JsonParser jp = f.createParser(new File(src_json_file_path));
	        ObjectMapper mapper = new ObjectMapper(); 
	        String type = null;
	        File f_applod = new File(app_load_file_path);
	        JsonGenerator jf_appl = mapper.getFactory().createGenerator(new BufferedWriter(new FileWriter(f_applod, true)));
	        int LoadCounter     = 0;
	        int AnyCounter      = 0;
	        int TotalEventsCnt  = 0;
	       
	        while(jp.nextToken() == JsonToken.START_OBJECT) {

	        	  TreeNode node = mapper.readTree(jp);
	        	  TotalEventsCnt++;

	        	    if (node.get("_n").toString().equals("\"aloaded\"")) {	
	        	    	LoadCounter++;
	        	    	mapper.writeValue(jf_appl, node);
	        	    }  else {
	        	    	AnyCounter++;	
	        	    }
              
	        	}
	    	logger.info("LoadCounter     = "+String.valueOf(LoadCounter));
	    	logger.info("AnyCounter      = "+String.valueOf(AnyCounter));
	    	logger.info("TotalEvents     = "+String.valueOf(TotalEventsCnt));
	    	jf_appl.close();

		 } 
	     catch (IOException e) {
		  logger.error(e.fillInStackTrace());
		 }
	}



И всё бы замечательно, работает как надо. Но одна проблема, на выходе между json вставляет пробелы (или переносы строки), а они очень мешают для дальнейшей работе с файлом.

Вот выходной файл
...
Рейтинг: 0 / 0
Пробел между json в выходном файле.
    #39592509
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexGru,
replaceAll знакомо?
...
Рейтинг: 0 / 0
Пробел между json в выходном файле.
    #39592510
AlexGru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знакомо, только к чему применять и в каком месте?
Исходный json м.б. 1-10-100Гб.
Пишем объект mapper.writeValue(jf_appl, node);
...
Рейтинг: 0 / 0
Пробел между json в выходном файле.
    #39592519
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexGruна выходе между json вставляет пробелы (или переносы строки),а кто вставляет?
...
Рейтинг: 0 / 0
Пробел между json в выходном файле.
    #39592543
AlexGru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как оказалось, отключить можно так
Код: java
1.
jf_appl.setPrettyPrinter(new MinimalPrettyPrinter(""));



пробелы исчезли но вот тут не помогло

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SparkSession spark = SparkSession
.builder()
.appName("Java Spark SQL basic example")
.config("spark.master", "local[*]")
.getOrCreate();

Dataset<Row> df = spark.read().schema(buildSchemaAppLoaded()).json(js_fpath);

df.printSchema();
df.show();
...
Рейтинг: 0 / 0
Пробел между json в выходном файле.
    #39592546
AlexGru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexGru,
Решилось так. это был не пробел, а перенос строки

Код: java
1.
2.
3.
	        MinimalPrettyPrinter pp = new MinimalPrettyPrinter(); 
	        pp.setRootValueSeparator("\n"); 
	        jf_appl.setPrettyPrinter(pp);
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Пробел между json в выходном файле.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]