IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Convertir une classe en JSON


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut Convertir une classe en JSON
    Bonjour,

    j'aimerais convertir easyexif::EXIFInfo result, comment dois-je procéder ?

    Merci d'avance.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 127
    Billets dans le blog
    149
    Par défaut
    Bonjour,

    Le plus simple sera de choisir une bibliothèque JSON. Ou bien, à la main (mais je déconseille) et d'écrire un fichier JSON à partir des données de la structure que vous avez.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 768
    Par défaut
    Cela dépend de la finalité de la conversion
    Si c'est pour transmettre des données entre différentes parties d'1 programme (en mémoire donc), 1 bibliothèque est le mieux.

    Mais pour l'écriture d'1 fichier ou la mise dans 1 base de données, souvent le "quick and dirty" est le + simple, le + rapide et le + efficace.
    et pour cela printf est très largement supérieur à cout.

    1 exemple, même si les noms des champs ne sont pas terribles pour 1 recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    66
    67
    68
    69
    70
       printf("{
          \"manufacturer name\": \"%s\",
          \"model\":             \"%s\",
          \"software used\":     \"%s\",
     
          \"image\": {
            \"description\": \"%s\",
            \"width\":       %d,
            \"height\":      %d,
            \"description\": \"%s\",
            \"orientation\": %d,
            \"copyright\":   \"%s\"
          },
     
          \"date/time\": {
            \"image date/time\":    \"%s\",
            \"original date/time\": \"%s\",
            \"digitize date/time\": \"%s\",
            \"subsecond time\":     \"%s\",
            \"exposure time\":      %d
          },
     
          \"take\": {
            \"F-stop\":               %.1f,
            \"exposure program\":     %d,
            \"ISO speed\":            %d,
            \"subject distance\":     %f,
            \"exposure bias\":        %f,
            \"flash used?\":          %d,
            \"flash returned light\": %d,
            \"flash mode\":           %d,
            \"metering mode\":        %d
          },
     
          \"focal length\": {
            \"lens\": %f,
            \"35mm\": %u
          },
     
          \"GPS\": {
            \"latitude\":  \"%f deg (%f deg, %f min, %f sec %c)\",
            \"longitude\": \"%f deg (%f deg, %f min, %f sec %c)\",
            \"altitude\":  %f,
            \"precision\": %f
          },
     
          \"lens\": {
            \"min focal length\": %f,
            \"max focal length\": %f,
            \"f-stop min\":       %.1f,
            \"f-stop max\":       %.1f,
            \"make\":             \"%s\",
            \"model\":            \"%s\"
          },
     
          \"focal plane\": {
            \"XRes\": %f,
            \"YRes\": %f
          }
        }", result.Make.c_str(), result.Model.c_str(), result.Software.c_str(), result.ImageDescription.c_str(),
        result.ImageWidth, result.ImageHeight, result.ImageDescription.c_str(), result.Orientation, result.Copyright.c_str(),
        result.DateTime.c_str(), result.DateTimeOriginal.c_str(), result.DateTimeDigitized.c_str(), result.SubSecTimeOriginal.c_str(),
        (unsigned)(1.0 / result.ExposureTime)), result.FNumber, result.ExposureProgram, result.ISOSpeedRatings, result.SubjectDistance,
        result.ExposureBiasValue, result.Flash, result.FlashReturnedLight, result.FlashMode, esult.MeteringMode, result.FocalLength,
        result.FocalLengthIn35mm, result.GeoLocation.Latitude, result.GeoLocation.LatComponents.degrees, result.GeoLocation.LatComponents.minutes,
        result.GeoLocation.LatComponents.seconds, result.GeoLocation.LatComponents.direction, result.GeoLocation.Longitude,
        result.GeoLocation.LonComponents.degrees, result.GeoLocation.LonComponents.minutes, result.GeoLocation.LonComponents.seconds,
        result.GeoLocation.LonComponents.direction, result.GeoLocation.Altitude, result.GeoLocation.DOP,
        result.LensInfo.FocalLengthMin, result.LensInfo.FocalLengthMax, result.LensInfo.FStopMin, result.LensInfo.FStopMax,
        result.LensInfo.Make.c_str(), result.LensInfo.Model.c_str(), result.LensInfo.FocalPlaneXResolution, result.LensInfo.FocalPlaneYResolution);

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    Peut-on placer le printf() dans une variable std::string (de préférence) ou cstring ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 768
    Par défaut
    Citation Envoyé par pol2095 Voir le message
    Peut-on placer le printf() dans une variable std::string (de préférence) ou cstring ?
    Comme je l'ai dit, cela va dépendre de ta conversion 1 print/ cout c'est pour l'écrire dans 1 fichier.

    Si tu veux le stocker dans 1 chaîne de caractère tu peux le faire, mais il faut avoir l'utilité. Et ce n'est plus avec 1 print, mais avec 1 sprintf ou 1 std::ostringstream en C++

    std::ostringstream, documentation cplusplus.com en anglais
    sprintf, documentation cplusplus.com en anglais

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 427
    Par défaut
    en utilisant "asprintf()" je peux le placer dans une variable.

    Merci pour l'aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/10/2018, 14h48
  2. convertir une chaine en json
    Par enzostar dans le forum Langage
    Réponses: 0
    Dernier message: 04/05/2010, 11h54
  3. python C API: convertir une struct C en Class python
    Par dmichel dans le forum Interfaçage autre langage
    Réponses: 11
    Dernier message: 25/06/2008, 16h30
  4. Réponses: 0
    Dernier message: 29/10/2007, 14h28
  5. Convertir une classe en .HPP
    Par kmaniche dans le forum C++Builder
    Réponses: 10
    Dernier message: 09/02/2006, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo