问题
This is My JSON
text from any URL http://www.example.com/json.php
Please can any one tell me how do I parse this json and put it in an Array so that it can be modal on customized ListView?
Let me tell you that I am new to Blackberry development previously iOS developer.
I have checked this link, but not able to run it .
If any one have any complete solution(example or usage) please help me.
I downloaded the sample of JSON
from developer.blackberry.com, but not able to run .
I also posted that question at this link
{
"status": "success",
"result": [
{
"offer_id": "456",
"member_id": "648",
"offer_type": "printable",
"cat_name": "Health & Wellbeing",
"price": "50",
"discount": "20% Off.",
"title": "20% Off",
"quantity": "200",
"details": "Enjoy 20% Off any Service.",
"coupon_code": "45600010106",
"company_logo": "http://beta/files/offers/logos/",
"offer_image": "http://beta/files/offers/images/f4d118737e_image_456.jpg",
"bc_image": "http://beta/files/offers/qrcodes/qrcouponid_45600010106.png",
"company_address1": "Oud Metha - Mohammed Saeed Hareb Bldg. Opp. American Hospital",
"company_address2": "Not Available",
"company_city": "Not Available",
"company_phone": "04 357 6738 Mob: 509284567",
"location": "Oud Metha",
"company_name": "Golden House Gents Spa Club",
"merchant_name": "Golden House Gents Spa Club",
"url": "http://google.com",
"date_end": "2013/12/30",
"date_start": "2013/07/25",
"condition": "1. Cannot be Combined with any other offer.\r\n2. Advance booking required.\r\n3. This Voucher must be Mentioned during time of Booking.\r\n4. Not Valid on Thurs & Sat.\r\n5. Expires 31st December 2013.",
"rating": "0",
"latitude": "25.2374",
"longitude": "55.3117"
}
]
}
回答1:
It's all explained in the documentation of JsonDataAccess. You'll have to do something like this:
// Create a data model with sorting keys for title
GroupDataModel *model =
new GroupDataModel(QStringList() << "title");
// Load the JSON data
JsonDataAccess jda;
QVariant list = jda.load("yourfile.json")["result"].toVariantList();
// Add the data to the model
model->insertList(list.value<QVariantList>());
// Add your model to a ListView
listView->setDataModel(model);
回答2:
This is the QML way of doing it, you don't have to touch any C++ code.
First you need to create a listview in a QML file.
ListView {
id: listData
dataModel: ArrayDataModel {
id: theDataModel
}
....
}
Now you will want to populate your listview with the data from a json file. Since you are making a call to the server, you will want to send a request.
function sendRequest() {
console.log("DEBUG: sending request");
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
// Need to wait for the DONE state or you'll get errors
if (request.readyState === XMLHttpRequest.DONE) {
if (request.status === 200) {
// if response is JSON you can parse it
var response = JSON.parse(request.responseText);
theDataModel.append({
"offer_id": response.result.offer_id,
"member_id": response.result.member_id,
"offer_type": response.result.offer_type
});
}
} else {
// Error
console.log("DEBUG: Status: " + request.status + ", Status Text: " + request.statusText);
}
}
// POST/GET request
request.open("GET", "http://www.example.com/json.php", true);
request.setRequestHeader("Accept", "application/json");
request.send();
}
And to display the values, you can use StandardListItem
:
StandardListItem {
title: ListItemData.offer_id
description: ListItemData.offer_type
status: ListItemData.member_id
}
来源:https://stackoverflow.com/questions/17914565/parsing-json-in-qt-c-blackberry-10