Marcofe
Marcofe

Reputation: 41

JsonCpp: Undefined reference to `Json::Value::operator[](int) const'

i'm trying to use JsonCpp with this sample code

string json_example = "{\"array\":[\"item1\", \"item2\"], \"not an array\":\"asdf\"}";


    // Let's parse it
    Json::Value root;
    Json::Reader reader;


    //Parsing of something. In example do parsing of json_example string.
    bool parsedSuccess = reader.parse(json_example, root, false);

    if (!parsedSuccess) {
        // report to the user the failure and their locations in the document.
        cout  << "Failed to parse JSON" << endl << reader.getFormatedErrorMessages() << endl;
        return 1;
    }

    // Let's extract the array that is contained inside the root object
    const Json::Value array = root["array"];

    // And print its values
    for (int index = 0; index < array.size(); ++index) {   // Iterates over the sequence elements.
        cout << "Element " << index << " in array: " << array[index].asString() << endl;
    }

    // Lets extract the not array element contained in the root object and print its value
    cout << "Not an array: " << root["not an array"] << endl;

    // If we want to print JSON is as easy as doing:
    cout << "Json Example pretty print: " << endl << root.toStyledString() << endl;

    return 0;

but i've received this error on this "..array[index].asString..."

Undefined reference to `Json::Value::operator[](int) const'

can anyone help me?!tnx so much

Upvotes: 3

Views: 10105

Answers (2)

Vladyslav Nikolaiev
Vladyslav Nikolaiev

Reputation: 2029

I think you didn't included jsoncpp.cpp file, which describes your json.h library file. U have to generate it using Pythot with command python amalgamate.py and then include it into your project

Upvotes: 0

Marcofe
Marcofe

Reputation: 41

Tnx for your answer... So the solution is changing this

 for (int index = 0; index < array.size(); ++index) {   // Iterates over the sequence elements.
    cout << "Element " << index << " in array: " << array[index].asString() << endl;
}

with

 for (unsigned int index = 0; index < array.size(); ++index) {   // Iterates over the sequence elements.
    cout << "Element " << index << " in array: " << array[index].asString() << endl;
}

bye

Upvotes: 1

Related Questions