Skip to content

[question] how to get a string value by pointer #683

Description

@zhishupp

I wrapped a C lib for using json.hpp, like this:

json_string = {"file":"/opt/test.conf"}

set json_string to a static json object

static json para = json::parse(json_string);

`
extern "C" const char*

get_json_string()

{

if (para["file"].is_string())     
            
{                        

    return para["file"].get<std::string>().c_str();      
           
}          

}
`

but actually, get_json_string cannot get the real address of para, so how to get a string value in this way ?

I don't want to use strcpy like this:
`
get_json_string(char* value)

{

if (para["file"].is_string())

{

    strcpy(value, para["file"].get<std::string>().c_str());

}

}
`

Activity

  1. zhishupp commented on Aug 9, 2017

    @zhishupp
    Author

    I find a way like this:

    `
    extern "C" const char*

    get_json_string()

    {

    if (para["file"].is_string())

    {

    return para["file"].get<json::string_t*>()->c_str();      
     ----  or ----
    return para["file"].get_ptr<json::string_t*>()->c_str();       
    

    }

    }
    `

    now I can get the correct data, is that right ?

    and

    get<json::string_t*>()->c_str(); or get_ptr<json::string_t*>()->c_str();

    which one is corret, or better ?

  2. nlohmann commented on Aug 9, 2017

    @nlohmann
    Owner

    You should use get_ptr to be sure no copies are made:

    return get_ptr<json::string_t*>()->c_str();
  3. nlohmann commented on Aug 10, 2017

    @nlohmann
    Owner

    Does this solve the issue?

  4. zhishupp commented on Aug 10, 2017

    @zhishupp
    Author

    many thanks, issue has been solved ^^

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions