forked from theArcticOcean/CLib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
UpdateJson.cpp
65 lines (61 loc) · 1.87 KB
/
UpdateJson.cpp
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <QString>
#include <QFile>
#include <QJsonDocument>
#include <QJsonObject>
#include <QTextStream>
#include <QDebug>
using namespace std;
int main()
{
QString filePath = "/Users/weiyang/Desktop/test.json";
QFile file( filePath );
QJsonDocument document;
QByteArray bytes;
QJsonObject jsonObj;
QJsonObject picturesObj;
QJsonObject newPicturesObj;
if( file.open( QIODevice::ReadOnly ) )
{
bytes = file.readAll();
file.close();
QJsonParseError jsonError;
document = QJsonDocument::fromJson( bytes, &jsonError );
if( jsonError.error != QJsonParseError::NoError )
{
return -1;
}
if( document.isObject() )
{
jsonObj = document.object();
QString pictureKey = "picture";
if( jsonObj.contains( pictureKey ) )
{
picturesObj = jsonObj.value( pictureKey ).toObject();
QStringList pictureKeys = picturesObj.keys();
for( auto key: pictureKeys )
{
QString picPath = picturesObj.take( key ).toString();
picPath.replace( "Setting Data1/photo", "Photo" );
newPicturesObj.insert( key, picPath );
}
jsonObj.remove( pictureKey );
jsonObj.insert( pictureKey, newPicturesObj );
}
}
}
if( newPicturesObj.size() > 0 )
{
document.setObject( jsonObj );
QByteArray bytes = document.toJson( QJsonDocument::Indented );
if( file.open( QIODevice::ReadWrite | QIODevice::Text | QIODevice::Truncate ) )
{
QTextStream iStream( &file );
iStream.setCodec( "utf-8" );
iStream << bytes;
file.close();
}
qDebug() << "Update finished.";
}
return 0;
}