//针对COCO标签只有单行,打开/修改非常慢的问题(虽然本程序跑起来也不快,但至少以后用Notepad++修改起来会快点)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int main(){
ifstream src("原.json");
ofstream dst("新.json");
string getall;
getline(src, getall);
string space = " ";
size_t count_of_space = 0;
size_t n = getall.size();
bool inmark = false;
for (size_t i = 0; i < n; ++i){
char c = getall[i];
if (c < 1)break;
//printf("%c[%d/%d]
", c, i, n);
if (c == '"'){
inmark = !inmark;
}
if (inmark){
dst << c;
continue;
}
switch (c){
case '[':
case '{':
count_of_space += 1;
dst << c << '
';
for (size_t j = 0; j < count_of_space; ++j)dst << space;
break;
case ']':
count_of_space -= 1;
if (count_of_space < 0)count_of_space = 0;
dst << '
';
for (size_t j = 0; j < count_of_space; ++j)dst << space;
dst << ']';
if (i + 3 < n){
if (getall[i + 1] != ','&&getall[i + 2] != ',')dst << '
';
}
break;
case '}':
count_of_space -= 1;
if (count_of_space < 0)count_of_space = 0;
dst << '
';
for (size_t j = 0; j < count_of_space; ++j)dst << space;
dst << '}';
if (i + 3 < n){
if(getall[i + 1] != ','&&getall[i + 2] != ',')dst << '
';
}
break;
case ',':
dst << ',';
case '
':
dst << '
';
if (count_of_space < 0)count_of_space = 0;
for (size_t j = 0; j < count_of_space; ++j)dst << space;
break;
default:
dst << c;
break;
}
}
return 0;
}