【问题标题】:How to parse with rapidjson from std::string?如何使用来自 std::string 的 rapidjson 进行解析?
【发布时间】:2013-03-25 16:01:07
【问题描述】:

如何使用来自 std::string 的 rapidjson 进行解析? 我正在尝试(json字符串有效,我检查了jsonlint.com

Document document;
char * writable = new char[contentString.size() + 1];
std::copy(contentString.begin(), contentString.end(), writable);
writable[contentString.size()] = '\0'; // don't forget the terminating 0
std::cout<<writable<<"\n";
if (document.Parse<0>(writable).HasParseError())
    return 1;

contentString 是我的 json std::string,但是当我开始时,我总是得到错误(return 1)。 我也试过没有 size()+1 和 '\0' 但没有(绝望的测量编程)。 谁能帮帮我?

【问题讨论】:

    标签: c++ rapidjson


    【解决方案1】:

    试试这个解析 std::string

    std::string str = "{ \"hello\" : \"world\" }";
    copiedDocument.Parse<0>(str.c_str());
    

    【讨论】:

      【解决方案2】:

      如果 contentString 是 std::string,请尝试

      document.Parse<0>(contentString.c_str()).HasParseError()
      

      如果 contentString 是 char *,就试试

      document.Parse<0>(contentString).HasParseError()
      

      你最好发布你的原始代码sn-p

      【讨论】:

        【解决方案3】:

        你试过了吗

        if (document.Parse<0>(contentString.c_str()).HasParseError())
            return 1;
        

        ?

        因为,从文档中,我看不出你为什么想要任何“可写”的东西......

        【讨论】:

        • 我一开始也尝试过这种方式,但是出错了。然后我开始改变了
        • 在这种情况下,请始终发布明显的代码,而不是复杂的版本。请给我们看看 contentString。
        【解决方案4】:

        在我看来,您发送 json 的字符串有错误, 您使用正确,建议您尝试发送:

        const char json[] = "{ \"hello\" : \"world\" }";
        

        看看它是否有效,如果很明显这是一个缓冲区问题..你可以从那里继续我确定

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-16
          • 1970-01-01
          相关资源
          最近更新 更多