C++ aide

Bonjour,

Voila je souhaiterais parser une chaine de caractere avec json spirit, c'est une chaine de caractere que je recupere en get (web services )

avez vous des piste pour que je puisse parser ma chaine

merci de votre aide

Cordialment

2 réponses

  1. salut vas sur ce lien cela t aideras bcp si tu es débutant:

    https://www.codeproject.com/Articles/20027/JSON-Spirit-A-C-JSON-Parser-Generator-Implemented
    0
    1. slt crackman,

      voila j'ai trouvé une fonction qui me permet de parser une chaine de caractere, mais tu peu me dire stp quel est la variable qui prend en compte le text a parser, comme ca je rentre ca valeur.

      la fonction

      #include <boost/spirit.hpp>
      #include <fstream>
      #include <sstream>
      #include <iostream>

      struct json_grammar
      : public boost::spirit::grammar<json_grammar>
      {
      template <typename Scanner>
      struct definition
      {
      boost::spirit::rule<Scanner> object, member, string, value, number, array;

      definition(const json_grammar &self)
      {
      using namespace boost::spirit;
      object = "{" >> member >> *("," >> member) >> "}";
      member = string >> ":" >> value;
      string = "\"" >> *~ch_p("\"") >> "\"";
      value = string | number | object | array | "true" | "false" | "null";
      number = real_p;
      array = "[" >> value >> *("," >> value) >> "]";
      }

      const boost::spirit::rule<Scanner> &start()
      {
      return object;
      }
      };
      };

      int main(int argc, char *argv[])
      {
      std::ifstream fs(argv[1]);
      std::ostringstream ss;
      ss << fs.rdbuf();
      std::string data = ss.str();

      json_grammar g;
      boost::spirit::parse_info<> pi = boost::spirit::parse(data.c_str(), g, boost::spirit::space_p);
      if (pi.hit)
      {
      if (pi.full)
      std::cout << "parsing all data successfully" << std::endl;
      else
      std::cout << "parsing data partially" << std::endl;
      std::cout << pi.length << " characters parsed" << std::endl;
      }
      else
      std::cout << "parsing failed; stopped at '" << pi.stop << "'" << std::endl;
      }

      je lé trouvé ici :

      https://theboostcpplibraries.com/boost.spirit

      c'est dans GRAMMAR le 2 eme code

      Merci de ton aide

      Cordialement
      0
  2. Ok super merci

    Cordialement
    0