Pagini recente » Cod sursa (job #459614) | Cod sursa (job #2864849) | Cod sursa (job #1778966) | Cod sursa (job #2060732) | Cod sursa (job #1346629)
#include <fstream>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
#define LG 2000000
ofstream fout("convertor.out");
char c[LG];
int i;
string s;
int main()
{
int g_ok = 0;
freopen("convertor.in","r",stdin);
fread(c,1,LG,stdin); // preia datele intr-un sir de caractere
i=0;
do
i ++;
while (c[i] != '{');// cauta primul obiect
do
{
i ++;
if (c[i] == '"') // verificam daca intalnim ghilimele
g_ok ++;
if (g_ok == 1 && c[i] != '"') // daca c[i] este un caracter dintr-o cheie
s += c[i];
if (c[i] == ',') // daca urmeaza o noua pereche cheie-valoare
{
g_ok = 0; // resetam contorul de ghilimele
s += c[i];
}
}
while (c[i]!= '}'); // repeta cat timp nu s-a ajuns la finalul primului obiect
s += ',';
s += '\n';
i = 0;
g_ok = 0;
do
i ++;
while (c[i] != '{'); // cauta primul obiect
do
{
i++;
if (c[i] == '"') // verificam daca apar ghilimele
g_ok ++;
if (g_ok == 2 && c[i] != '"' && c[i] != ':' && c[i] != '{' && c[i] != '}' && c[i] != ']' && c[i] != ' ' && c[i] != ',' && (int)c[i] != 10) //daca valaorea nu este un string
s += c[i];
if (g_ok == 3 && c[i] != '"') // daca valoarea este un string
s += c[i];
if ( c[i] == ',') // daca urmeaza o noua pereche cheie valoare
{
g_ok = 0;
s += c[i];
}
if (c[i] == '{') // daca urmeaza un nou obiect
s += '\n';
}
while (c[i] != ']'); // repeta cat timp mai exista obiecte in json
s += ',';
fout<<s; //afiseaza stringul rezultat
fout.close();
return 0;
}