Can i map data getting from MongoDB after lookup and unwind collections - c#

Root Class
SubClass 1
SubClass 2
SubClass 3
Base Properties Class
Dynamic Lookup Function
Error
Class definitions and error is above. Query and result is below.
collection is database.GetCollection<T>().Aggregate(); (IAggregateFluent<T>)
MongodbQuery:
{
"aggregate": "Survey",
"pipeline": [
{
"$lookup": {
"from": "SurveyPart",
"localField": "_id",
"foreignField": "SurveyId",
"as": "SurveyParts"
}
},
{
"$unwind": {
"path": "$SurveyParts",
"preserveNullAndEmptyArrays": true
}
},
{
"$lookup": {
"from": "SurveyPartQuestion",
"localField": "SurveyParts._id",
"foreignField": "SurveyPartId",
"as": "SurveyParts.SurveyPartQuestions"
}
},
{
"$unwind": {
"path": "$SurveyParts.SurveyPartQuestions",
"preserveNullAndEmptyArrays": true
}
},
{
"$lookup": {
"from": "SurveyPartQuestionAnswer",
"localField": "SurveyParts.SurveyPartQuestions._id",
"foreignField": "SurveyPartQuestionId",
"as": "SurveyParts.SurveyPartQuestions.SurveyPartQuestionAnswers"
}
},
{
"$unwind": {
"path": "$SurveyParts.SurveyPartQuestions.SurveyPartQuestionAnswers",
"preserveNullAndEmptyArrays": true
}
},
{
"$match": {
"IsDeleted": false
}
},
{
"$sort": {
"_id": -1
}
},
{
"$skip": 0
},
{
"$limit": 50
}
]
}
MongoDb Result:
[
{
"_id": 1,
"CreatedOn": "",
"ModifiedOn": "",
"CreatedBy": 1,
"ModifiedBy": 1,
"OwningUser": 1,
"StatusCode": 1,
"IsDeleted": false,
"Name": "TEST SURVEY",
"Description": "TEST SURVEY DESCRIPTION",
"SurveyParts": {
"_id": 1,
"CreatedOn": "",
"ModifiedOn": "",
"CreatedBy": 1,
"ModifiedBy": 1,
"OwningUser": 1,
"StatusCode": 1,
"IsDeleted": false,
"Name": "TEST PART",
"Description": "TEST PART DESCRIPTION",
"Order": 1,
"SurveyId": 1,
"SurveyPartQuestions": {
"_id": 1,
"CreatedOn": "",
"ModifiedOn": "",
"CreatedBy": 1,
"ModifiedBy": 1,
"OwningUser": 1,
"StatusCode": 1,
"IsDeleted": false,
"Name": "TEST QUESTION",
"Description": "TEST QUESTION DESCRIPTION",
"ReferenceCode": "TEST REFERENCE",
"Type": "RADIO",
"Order": 1,
"IsRequired": true,
"SurveyPartId": 1,
"SurveyPartQuestionAnswers": {
"_id": 1,
"CreatedOn": "",
"ModifiedOn": "",
"CreatedBy": 1,
"ModifiedBy": 1,
"OwningUser": 1,
"StatusCode": 1,
"IsDeleted": false,
"Name": "TEST ANSWER",
"Hint": "TEST ANSWER HINT",
"Tag": "TEST TAG",
"IsTextField": true,
"Order": 1,
"SurveyPartQuestionId": 1
}
}
}
}
]
I need to map them all at once on the root class. How can i unwind data from this aggregation or is it possible? I spending too many times for this error but i couldnt found anything about it.

Related

Restsharp JSON response search

I need to search the following JSON response. I have no control over how the JSON is returned to me or how it is nested. I am using Restsharp by default, but I am open to whatever method helps me accomplish the task.
{
"response": [
{
"id": 1008,
"brandId": 74,
"collectionId": 32,
"productTypeId": 1,
"nominalCodeStock": "1200",
"nominalCodePurchases": "5002",
"nominalCodeSales": "4000",
"seasonIds": [
],
"identity": {
"sku": "SKU0001",
"isbn": "0684843285",
"ean": "ISNB09712345",
"upc": "5778400001",
"barcode": "738737638"
},
"productGroupId": 0,
"featured": false,
"stock": {
"stockTracked": true,
"weight": {
"magnitude": 0.7
},
"dimensions": {
"length": 2,
"height": 12,
"width": 5,
"volume": 120
}
},
"financialDetails": {
"taxCode": {
"id": 7,
"code": "T20"
}
},
"salesChannels": [
{
"salesChannelName": "Brightpearl",
"productName": "Product B",
"productCondition": "new",
"categories": [
{
"categoryCode": "276"
},
{
"categoryCode": "295"
}
],
"description": {
"languageCode": "en",
"text": "Some description",
"format": "HTML_FRAGMENT"
},
"shortDescription": {
"languageCode": "en",
"text": "Some short description",
"format": "HTML_FRAGMENT"
}
}
],
"composition": {
"bundle": false
},
"variations": [
{
"optionId": 1,
"optionName": "Colour",
"optionValueId": 1,
"optionValue": "Black"
},
{
"optionId": 3,
"optionName": "Colour",
"optionValueId": 9,
"optionValue": "Black"
}
],
"warehouses": {
"2": {
"defaultLocationId": 5,
"reorderLevel": 1,
"reorderQuantity": 0
},
"3": {
"defaultLocationId": 0,
"reorderLevel": 1,
"reorderQuantity": 1
}
},
"createdOn": "2015-01-08T17:57:18.000Z",
"updatedOn": "2015-04-01T13:17:58.000Z",
"reporting": {
"categoryId": 353,
"subcategoryId": 369,
"seasonId": 2
},
"primarySupplierId": 202,
"status": "LIVE",
"salesPopupMessage": "Offer the extended warranty",
"version": 1192098806000
}
]
}
Specifically I need to retrieve the categoryCode values. I'm lost on this one. Any direction is much appreciated.

How to index NotAnalyzed field type List<string>?

class MyObject{
public string Name{get;set;}
public List<string> Tags{get;set;}
}
/*Create mapping */
client.Map<MyObject>(m =>
m.Properties(props =>
props.String(s =>
s.Name(p => p.Name)
.Path(MultiFieldMappingPath.Full)
.Index(FieldIndexOption.NotAnalyzed)
.Fields(f =>
f.String(ps =>
ps.Name(p => p.Name.Suffix("searchable"))
.Index(FieldIndexOption.Analyzed)
)
)
)
)
);
How to index NotAnalyzed for field Tags same field Name
I want to search exactly one phrase in the Tags field
Example: I want search "elastic search" to find out which object contains exactly that word in the Tags field
Obj1:
{
"Name":"Object 1",
"Tags":["elastic search","how to code"]
}
Obj2:
{
"Name":"Object 2",
"Tags":["elastic","c#"]
}
Obj3:
{
"Name":"Object 2",
"Tags":["learn elastic search","learn C#"]
}
===> Result: Obj 1
Based on your request I will create a test1 index.
PUT test1/doc/1
{
"Name": "Object 1",
"Tags": [
"elastic search",
"how to code"
]
}
PUT test1/doc/2
{
"Name":"Object 2",
"Tags":["elastic","c#"]
}
So I will write query to fetch the exact term elastic search as you mentioned in your example.
GET test1/doc/_search
{
"query": {
"term": {
"Tags.keyword":
"elastic search"
}
}
}
So the result is for the below query is
curl -XGET "http://localhost:9200/test1/doc/_search"
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "test1",
"_type": "doc",
"_id": "2",
"_score": 1,
"_source": {
"Name": "Object 2",
"Tags": [
"elastic",
"c#"
]
}
},
{
"_index": "test1",
"_type": "doc",
"_id": "1",
"_score": 1,
"_source": {
"Name": "Object 1",
"Tags": [
"elastic search",
"how to code"
]
}
}
]
}
}
So now the query to fetch documents based on your field.
curl -XGET "http://localhost:9200/test1/doc/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"term": {
"Tags.keyword":
"elastic search"
}
}
}'
And the result is
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.2876821,
"hits": [
{
"_index": "test1",
"_type": "doc",
"_id": "1",
"_score": 0.2876821,
"_source": {
"Name": "Object 1",
"Tags": [
"elastic search",
"how to code"
]
}
}
]
}
}
Hope it works. Let me know if you are still facing any issues.

Handling double quotes in JSON strings

We have an application with knockout and we are facing a problem that some registers in the database have double quotes, which caused JSON parsing to fail.
Here's my json that is not valid due to a rogue double quote:
{
"OptionSummaries": [
{
"Id": 110,
"Name": "Option 1",
"Status": 1,
"ProductGroupNodes": [
{
"Id": 110,
"Name": "Corporate Brand Reputation",
"Status": 2,
"Waves": [
{
"Id": 110,
"Name": "Wave 1",
"Status": 2,
"Services": [
{
"Id": 1101,
"Title": "Proposal Budget Owner Service",
"CurrencyCode": "USD",
"EstimatedCost": 177.0000,
"CreationDateTime": "/Date(1437472898503)/",
"Status": 2
}
]
}
]
},
{
"Id": 111,
"Name": "2013 Consumer Scan",
"Status": 1,
"Waves": [
{
"Id": 111,
"Name": "Wave 1",
"Status": 1,
"Services": [
{
"Id": 1111,
"Title": "Proposal Budget Owner Service",
"CurrencyCode": "USD",
"EstimatedCost": 0.0000,
"CreationDateTime": "/Date(1437472898503)/",
"Status": 1
}
]
}
]
}
]
},
{
"Id": 115,
"Name": "Option 2",
"Status": 1,
"ProductGroupNodes": [
{
"Id": 115,
"Name": "Corporate Brand Reputation",
"Status": 1,
"Waves": [
{
"Id": 115,
"Name": "Wave 1",
"Status": 1,
"Services": [
{
"Id": 1151,
"Title": "Proposal Budget Owner Service",
"CurrencyCode": "USD",
"EstimatedCost": 0.0000,
"CreationDateTime": "/Date(1437472898503)/",
"Status": 1
}
]
}
]
},
{
"Id": 116,
"Name": "2013 Consumer Scan",
"Status": 1,
"Waves": [
{
"Id": 116,
"Name": "Wave 1",
"Status": 1,
"Services": [
{
"Id": 1161,
"Title": "Proposal Budget Owner Service",
"CurrencyCode": "USD",
"EstimatedCost": 0.0000,
"CreationDateTime": "/Date(1437472898503)/",
"Status": 1
}
]
}
]
}
]
}
],
"ServiceCostsEdit": {
"ServiceId": 1101,
"ServiceName": "Proposal Budget Owner Service",
"ServiceCurrencyIsoCode": "USD",
"ServiceLegalEntityCode": "0310",
"LaborHourCostsPanel": {
"LaborHourCosts": [
{
"Id": 2,
"CostCenters": [
{
"Disabled": false,
"Group": null,
"Selected": false,
"Text": "3101010001 - Consumer KAM Group",
"Value": "3101010001"
},
{
"Disabled": false,
"Group": null,
"Selected": false,
"Text": "3102510255 - Knowledge Panel",
"Value": "3102510255"
}
],
"FiscalYears": [
{
"Disabled": false,
"Group": null,
"Selected": false,
"Text": "2013",
"Value": "2013"
}
],
"LaborGrades": [
{
"Code": "0HL002",
"CurrencyCode": "USD",
"Rate": 44.0000,
"Disabled": false,
"Group": null,
"Selected": false,
"Text": "0HL002 - 44.00/hr USD",
"Value": "0HL002"
}
],
"SelectedLaborGradeCostCenter": "3101010001",
"SelectedLaborGradeFiscalYear": 2013,
"SelectedLaborGradeCode": "0HL002",
"SelectedLaborGradeRate": 44.0000,
"SetupHours": 2.00,
"ManagementHours": 1.00,
"DeliveryHours": 1.00,
"IsEmpty": false
}
],
"LaborHourCostsCostCenterDataSource": [
{
"Disabled": false,
"Group": null,
"Selected": false,
"Text": "3101010001 - Consumer KAM Group",
"Value": "3101010001"
},
{
"Disabled": false,
"Group": null,
"Selected": false,
"Text": "3102510255 - Knowledge Panel",
"Value": "3102510255"
}
],
"DefaultCostCenterCodeForInitialEmptyRecord": null,
"DefaultFiscalYearForInitialEmptyRecord": null,
"OverheadCosts": [
{
"LaborGradeCostCenterCode": "3101010001",
"LaborGradeFiscalYear": 2013,
"OverheadRate": 0.0000,
"SetupHours": 2.00,
"ManagementHours": 1.00,
"DeliveryHours": 1.00
}
],
"OverheadCostsVisible": true,
"OverheadCostsInitialDataSource": [
{
"Key": {
"CostCenterCode": "3101010001",
"FiscalYear": 2013
},
"Value": {
"Code": "0HO001",
"CurrencyCode": "USD",
"Rate": 0.00,
"Disabled": false,
"Group": null,
"Selected": false,
"Text": "0HO001 - USD 0.00/hr",
"Value": "0HO001"
}
}
],
"CostCenter": "F2F PAPI",
"ServiceCurrencyIsoCode": "USD",
"EditingAllowed": true
},
"VendorCostsPanel": {
"VendorCosts": [
{
"Id": 132,
"SelectedCostElementCode": "1992000004",
"VendorCode": "",
"VendorName": null,
"Description": "doublequotes"","DirectCostAttachment":null,"Quantity":1,"VendorRate":1.0000,"IsEmpty":false}],"CostElements":[{"Disabled":false,"Group":null,"Selected":false,"Text":"ExternalSuppliercosts","Value":"1992000004"},{"Disabled":false,"Group":null,"Selected":false,"Text":"Licensesfromaffilitatedcompanies","Value":"1992000002"}],"ServiceCurrencyIsoCode":"USD","EditingAllowed":true},"CostingAssumptionsPanel":{"Description":"","EditingAllowed":true},"ServiceSpecificationsPanel":{"Title":"ProposalBudgetOwnerService","Type":"ProposalBudgetOwnerService","Fields":[{"Value":"Hellolonglonglongtext...","Id":153,"Code":"OVERVIEW","Title":"Overview","IsRequiredForCosting":false,"DependencyVisibilityExpression":null,"FieldCodesToReevaluateOnChange":[],"EditingAllowed":false}]},"ApprovalComments":{"CommentType":0,"Message":null,"ApproverName":null,"ApproverEmail":null,"AnyComments":false},"RejectedCostInfoVisible":false,"EditingAllowed":true},"SubmitCostsEnabled":true,"EditingAllowed":false,"SelectedTreeNode":{"Id":1101,"Type":3},"Proposal":{"ProposalId":11,"ProposalName":"Ad-hocatCostingonMain","ProposalCostCenterCode":"3102510220","ProposalValid":{"IsValid":true,"ErrorMessage":""},"SoldToCustomer":"JenniferSamson","ExpectedProjectStartDate":"/Date(1426892400000)/","ExpectedProjectEndDate":"/Date(1431208800000)/","FunctionalityAreaEnabled":true}}
If you test this json against jsonlint you will see where the problem lies. What is the best way to handle this? I think the way I'm serializing the C# model to JSON is not proper? To do that I use:
var jsonModel = JsonConvert.SerializeObject(Model);
Any help is very appreciated.
EDIT
Issue was fixed. Problem was with the serialization.
I fixed this by using the method HttpUtility.JavaScriptStringEncode
var jsonViewModel = HttpUtility.JavaScriptStringEncode(Json.Encode(Model));
This solved my problem. All I had to do to pass this to knockout was #Html.Raw(jsonViewModel)
Best regards and thanks everyone!
Daniel

How to display JSON Data onto a UITableView

I am using Xamarin.iOS to return a JSON and attempt to place it on a UITableView, however I cannot seem to get it to work, here is what I am attempting to do so far:
Main View Controller
This is how I am returning the JSON
var request = new RestRequest {RootElement = "data", Resource = "/users/self/feed"};
request.AddParameter("access_token", instagramAccessToken);
var client = new RestClient ("https://api.instagram.com/v1");
// Edited Client Execution
client.ExecuteAsync(request, response =>
{
RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(response.Content);
table.Source = new TableSource(rootObject.data);
table.ReloadData();
}
);
TableSource Class
public List<RootObject> Data { get; set; }
protected string cellIdentifier = "TableCell";
public TableSource ()
{
Data = new List<T> ();
}
public TableSource(List<T> data)
{
Data = data;
}
public override int RowsInSection (UITableView tableview, int section)
{
return Data.Count;
}
public override void RowSelected (UITableView tableView, NSIndexPath indexPath)
{
if (OnRowSelected != null) {
OnRowSelected (this, new RowSelectedEventArgs (tableView, indexPath));
}
}
public class RowSelectedEventArgs : EventArgs
{
public UITableView tableView { get; set; }
public NSIndexPath indexPath { get; set; }
public RowSelectedEventArgs(UITableView tableView, NSIndexPath indexPath) : base()
{
this.tableView = tableView;
this.indexPath = indexPath;
}
}
public event EventHandler<RowSelectedEventArgs> OnRowSelected;
public override UITableViewCell GetCell (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath)
{
UITableViewCell cell = tableView.DequeueReusableCell (cellIdentifier);
// if there are no cells to reuse, create a new one
if (cell == null)
cell = new UITableViewCell (UITableViewCellStyle.Default, cellIdentifier);
// Edited Text
cell.TextLabel.Text = ((Datum)Data[indexPath.Row]).user.username;
return cell;
}
I didn't really have a concrete method of displaying the JSON on the Table, so I would be pretty open to radical change. BTW the JSON loads on the MainViewController perfectly.
JSON Response
Most of your suggestions don't take into consideration how the JSON looks like so here you go:
{
"pagination": {
"next_url": "https://api.instagram.com/v1/users/self/feed?access_token=6489401.88b3fb2.7af2a0355ea24f4590efa1ee82ed0a49&max_id=668439962408115415_16915182",
"next_max_id": "668439962408115415_16915182"
},
"meta": {
"code": 200
},
"data": [
{
"attribution": null,
"tags": [
"selfie"
],
"type": "image",
"location": null,
"comments": {
"count": 0,
"data": []
},
"filter": "Normal",
"created_time": "1393953134",
"link": "http://instagram.com/p/lIO1_jmkkr/",
"likes": {
"count": 14,
"data": [
{
"username": "muahjay",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_304620904_75sq_1392618687.jpg",
"id": "304620904",
"full_name": "Jeanettee Nicole Cambero Gamez"
},
{
"username": "iam_mrsmith31",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_32806209_75sq_1392607367.jpg",
"id": "32806209",
"full_name": "Kiondrix Smith"
},
{
"username": "anniyalation",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_30752906_75sq_1390523572.jpg",
"id": "30752906",
"full_name": "Niya G."
},
{
"username": "fonzo_badmon",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_271402803_75sq_1393641486.jpg",
"id": "271402803",
"full_name": "Slimshady"
}
]
},
"images": {
"low_resolution": {
"url": "http://distilleryimage11.s3.amazonaws.com/e02592b0a3bf11e3b63212d269f676eb_6.jpg",
"width": 306,
"height": 306
},
"thumbnail": {
"url": "http://distilleryimage11.s3.amazonaws.com/e02592b0a3bf11e3b63212d269f676eb_5.jpg",
"width": 150,
"height": 150
},
"standard_resolution": {
"url": "http://distilleryimage11.s3.amazonaws.com/e02592b0a3bf11e3b63212d269f676eb_8.jpg",
"width": 640,
"height": 640
}
},
"users_in_photo": [],
"caption": {
"created_time": "1393953134",
"text": "#Selfie",
"from": {
"username": "kthompkins7",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_5941681_75sq_1378508674.jpg",
"id": "5941681",
"full_name": "kthompkins7"
},
"id": "668849828018145517"
},
"user_has_liked": false,
"id": "668849827690989867_5941681",
"user": {
"username": "kthompkins7",
"website": "",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_5941681_75sq_1378508674.jpg",
"full_name": "kthompkins7",
"bio": "",
"id": "5941681"
}
},
{
"attribution": null,
"tags": [
"rp",
"amen"
],
"type": "image",
"location": null,
"comments": {
"count": 5,
"data": [
{
"created_time": "1393949795",
"text": "#tmcmc Dobson a Christian!!!!",
"from": {
"username": "keelanwillison",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_26089241_75sq_1380511035.jpg",
"id": "26089241",
"full_name": "Keelanwillison"
},
"id": "668821819276579152"
},
{
"created_time": "1393950029",
"text": "Yo my cousin got me a singed autograph from you at the Boston boat show thanks man #a_dobson3",
"from": {
"username": "danthebigboy914",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_27354625_75sq_1393859632.jpg",
"id": "27354625",
"full_name": "Danny Chiappetta"
},
"id": "668823778033324461"
},
{
"created_time": "1393950659",
"text": "Amen",
"from": {
"username": "sandyrodr",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_44889389_75sq_1361591427.jpg",
"id": "44889389",
"full_name": "sandyrodr"
},
"id": "668829062428545715"
},
{
"created_time": "1393950664",
"text": "πŸ™",
"from": {
"username": "cherydaily",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_18483862_75sq_1379884114.jpg",
"id": "18483862",
"full_name": "Andrew \"Drew\" Chery"
},
"id": "668829109488636596"
},
{
"created_time": "1393951921",
"text": "Amen",
"from": {
"username": "bostonsonia",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_182219303_75sq_1391293289.jpg",
"id": "182219303",
"full_name": "Sonia"
},
"id": "668839648625348773"
}
]
},
"filter": "Normal",
"created_time": "1393949714",
"link": "http://instagram.com/p/lIIUdggtOj/",
"likes": {
"count": 324,
"data": [
{
"username": "bwest05",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_387702554_75sq_1393739891.jpg",
"id": "387702554",
"full_name": "πŸ’₯bbπŸ’₯"
},
{
"username": "babygirl6193",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_23365060_75sq_1384972330.jpg",
"id": "23365060",
"full_name": "babygirl6193"
},
{
"username": "derekmooney1",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_218356294_75sq_1388601101.jpg",
"id": "218356294",
"full_name": "Derek Mooney"
},
{
"username": "zay0613",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_342812999_75sq_1369576584.jpg",
"id": "342812999",
"full_name": "Zay"
}
]
},
"images": {
"low_resolution": {
"url": "http://distilleryimage11.s3.amazonaws.com/0e1b270aa3b811e395af12cdc849cb9b_6.jpg",
"width": 306,
"height": 306
},
"thumbnail": {
"url": "http://distilleryimage11.s3.amazonaws.com/0e1b270aa3b811e395af12cdc849cb9b_5.jpg",
"width": 150,
"height": 150
},
"standard_resolution": {
"url": "http://distilleryimage11.s3.amazonaws.com/0e1b270aa3b811e395af12cdc849cb9b_8.jpg",
"width": 640,
"height": 640
}
},
"users_in_photo": [],
"caption": {
"created_time": "1393949714",
"text": "#RP from #flashgoodwin #AMEN",
"from": {
"username": "a_dobson3",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_203045179_75sq_1374262647.jpg",
"id": "203045179",
"full_name": "a_dobson3"
},
"id": "668821135462420769"
},
"user_has_liked": false,
"id": "668821135110099875_203045179",
"user": {
"username": "a_dobson3",
"website": "",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_203045179_75sq_1374262647.jpg",
"full_name": "a_dobson3",
"bio": "",
"id": "203045179"
}
},
{
"attribution": null,
"tags": [
"tb12"
],
"type": "image",
"location": null,
"comments": {
"count": 169,
"data": [
{
"created_time": "1393952642",
"text": "My guy! The greatest! I just want him to get another ring so the haters can stop saying he hasn't won one since 04. I mean he still won them right? #TomBrady #patriots",
"from": {
"username": "k_aus32",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_39840771_75sq_1390431094.jpg",
"id": "39840771",
"full_name": "k_aus32"
},
"id": "668845703585318559"
},
{
"created_time": "1393952673",
"text": "#heres_jonni9",
"from": {
"username": "allyson21lautner",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_184895764_75sq_1393107648.jpg",
"id": "184895764",
"full_name": "Allyson πŸ’Œ"
},
"id": "668845962264823470"
},
{
"created_time": "1393952694",
"text": "Let's go !",
"from": {
"username": "tom12terrific",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_421023272_75sq_1393644166.jpg",
"id": "421023272",
"full_name": "Andrew Estrada"
},
"id": "668846135581853361"
},
{
"created_time": "1393952856",
"text": "β™‘",
"from": {
"username": "in_neverland74",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_181245582_75sq_1391928288.jpg",
"id": "181245582",
"full_name": "KarenπŸ’•"
},
"id": "668847491935880949"
},
{
"created_time": "1393952914",
"text": "Follow for patriots pics daily!! (Ifollowback)",
"from": {
"username": "ne_patriots_fanpage__",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_983242248_75sq_1391989748.jpg",
"id": "983242248",
"full_name": "New England Patriots Fanpage"
},
"id": "668847980295472912"
},
{
"created_time": "1393952952",
"text": "Best ever; period. Let's see anyone win a ring with the humps he's had to work with, (except Randy).",
"from": {
"username": "calidoso76",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_1101426299_75sq_1392654362.jpg",
"id": "1101426299",
"full_name": "calidoso76"
},
"id": "668848301545604900"
},
{
"created_time": "1393953005",
"text": "Shit just because brady hasn't won a ring since 04 don't mean a thing....one more and he'll have 6.....the most superbowl wins than ANY quarterback EVER. #patriots",
"from": {
"username": "inkandartsosick",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_260242163_75sq_1363337609.jpg",
"id": "260242163",
"full_name": "Eric Hughes"
},
"id": "668848744304723771"
},
{
"created_time": "1393953023",
"text": "πŸ‘ˆπŸˆπŸ™Œ",
"from": {
"username": "bvsed_papi_",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_408657565_75sq_1393905141.jpg",
"id": "408657565",
"full_name": "Abel Valleβ„’"
},
"id": "668848894913791811"
}
]
},
"filter": "Lo-fi",
"created_time": "1393949267",
"link": "http://instagram.com/p/lIHd-_v8Uj/",
"likes": {
"count": 13685,
"data": [
{
"username": "dollathebarber",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_219503241_75sq_1373905843.jpg",
"id": "219503241",
"full_name": "dollathebarber"
},
{
"username": "emastro23",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_21122956_75sq_1388823730.jpg",
"id": "21122956",
"full_name": "Eddie Mastrocola"
},
{
"username": "pat_fan99",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_304601453_75sq_1377084414.jpg",
"id": "304601453",
"full_name": "Timothy Smith"
},
{
"username": "___adam___q",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_3694047_75sq_1367384028.jpg",
"id": "3694047",
"full_name": "Adam Quinonez"
}
]
},
"images": {
"low_resolution": {
"url": "http://distilleryimage10.s3.amazonaws.com/1c67f514a3b711e383121299eef1f922_6.jpg",
"width": 306,
"height": 306
},
"thumbnail": {
"url": "http://distilleryimage10.s3.amazonaws.com/1c67f514a3b711e383121299eef1f922_5.jpg",
"width": 150,
"height": 150
},
"standard_resolution": {
"url": "http://distilleryimage10.s3.amazonaws.com/1c67f514a3b711e383121299eef1f922_8.jpg",
"width": 640,
"height": 640
}
},
"users_in_photo": [],
"caption": {
"created_time": "1393949267",
"text": "#tb12",
"from": {
"username": "patriots",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_1939080_75sq_1385924433.jpg",
"id": "1939080",
"full_name": "New England Patriots"
},
"id": "668817391815214218"
},
"user_has_liked": false,
"id": "668817391496447267_1939080",
"user": {
"username": "patriots",
"website": "",
"profile_picture": "http://images.ak.instagram.com/profiles/profile_1939080_75sq_1385924433.jpg",
"full_name": "New England Patriots",
"bio": "",
"id": "1939080"
}
},
{
"attribution": null,
"videos": {
"low_resolution": {
"url": "http://distilleryimage4.s3.amazonaws.com/2cb7114aa3b511e3a3e312f545262070_102.mp4",
"width": 480,
"height": 480
},
"standard_resolution": {
"url": "http://distilleryimage4.s3.amazonaws.com/2cb7114aa3b511e3a3e312f545262070_101.mp4",
"width": 640,
"height": 640
}
}
}
]
}
After those two Edits I still have two errors:
Error on Main View Controller
Error on Table Source
No need to assign the Data multiple times. Assign the source once and then call ReloadData().
client.ExecuteAsync(request, response =>
{
var rootObject = JsonConvert.DeserializeObject<RootObject>(response.Content);
table.InvokeOnMainThread(() =>
{
table.Source = new TableSource(rootObject.data);
table.ReloadData();
});
}
);
EDIT: It seems there are four items in the Datum field and the last one is null.
https://github.com/sami1971/SimplyMobile/blob/master/iOS/Samples/TwitterSample/Twitter.cs
ToString() override for Datum:
public override string ToString()
{
if (user == null)
{
return "User is null";
}
return user.full_name;
}
For full sample download the project, open iOS/SimplyMobile.iOS.sln and run Samples/TwitterSample.
You should be able to do something like this:
cell.TextLabel.Text = ((Datum)Data[indexPath.Row]).user.username;
you have to reload tableView when all data retrived from url to your dictionary or array.
you can do this like this
[self.Yourtableview reloadData];

How to deserialize this JSON in asp.net

This is my code to Deserialize JSOn in asp.net, but it's not working.
[
{
"resultList": [
{
"channelType": "",
"duration": "2:29:30",
"episodeno": 0,
"genre": "Drama",
"genreList": [
"Drama"
],
"genres": [
{
"personName": "Drama"
}
],
"id": 1204,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/The-Great-target.jpg",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/The-Great-target.jpg",
"language": "Hindi",
"name": "The Great Target",
"productId": 1204,
"productMasterId": 1203,
"productMasterName": "The Great Target",
"productName": "The Great Target",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3,
"releaseYear": "2005",
"releaseyear": "2005",
"showGoodName": "Movies ",
"views": 8276
},
{
"channelType": "",
"duration": "2:30:30",
"episodeno": 0,
"genre": "Romance",
"genreList": [
"Romance"
],
"genres": [
{
"personName": "Romance"
}
],
"id": 1144,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/MereSapnoKiRaani.JPG",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/MereSapnoKiRaani.JPG",
"language": "Hindi",
"name": "Mere Sapnon Ki Rani",
"productId": 1144,
"productMasterId": 1143,
"productMasterName": "Mere Sapnon Ki Rani",
"productName": "Mere Sapnon Ki Rani",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3,
"releaseYear": "1997",
"releaseyear": "1997",
"showGoodName": "Movies ",
"views": 6472
},
{
"channelType": "",
"duration": "2:34:07",
"episodeno": 0,
"genre": "Drama",
"genreList": [
"Drama"
],
"genres": [
{
"personName": "Drama"
}
],
"id": 1520,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/SATYAMEVAJAYATHE.jpg",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/SATYAMEVAJAYATHE.jpg",
"language": "Telugu",
"name": "Satyameva Jayathe",
"productId": 1520,
"productMasterId": 1519,
"productMasterName": "Satyameva Jayathe",
"productName": "Satyameva Jayathe",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3,
"releaseYear": "2004",
"releaseyear": "2004",
"showGoodName": "Movies ",
"views": 9897
},
{
"channelType": "",
"duration": "2:39:06",
"episodeno": 0,
"genre": "Drama",
"genreList": [
"Drama"
],
"genres": [
{
"personName": "Drama"
}
],
"id": 9155,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/sabse_bada_mawali.jpg",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/sabse_bada_mawali.jpg",
"language": "Hindi",
"name": "Sabse Bada Mawali",
"productId": 9155,
"productMasterId": 3451,
"productMasterName": "Sabse Bada Mawali",
"productName": "Sabse Bada Mawali",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3,
"releaseYear": "2007",
"releaseyear": "2007",
"showGoodName": "Movies ",
"views": 18029
},
{
"channelType": "",
"duration": "2:31:00",
"episodeno": 0,
"genre": "Thriller",
"genreList": [
"Thriller"
],
"genres": [
{
"personName": "Thriller"
}
],
"id": 43,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/Kyon_292.jpg",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/Kyon_292.jpg",
"language": "Hindi",
"name": "Kyon",
"productId": 43,
"productMasterId": 42,
"productMasterName": "Kyon",
"productName": "Kyon",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3.5,
"releaseYear": "2003",
"releaseyear": "2003",
"showGoodName": "Movies ",
"views": 11558
},
{
"channelType": "",
"duration": "2:16:50",
"episodeno": 0,
"genre": "Drama",
"genreList": [
"Drama"
],
"genres": [
{
"personName": "Drama"
}
],
"id": 13894,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/pyarkasaudagar.jpg",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/pyarkasaudagar.jpg",
"language": "Hindi",
"name": "Pyar Ka Saudagar",
"productId": 13894,
"productMasterId": 4447,
"productMasterName": "Pyar Ka Saudagar",
"productName": "Pyar Ka Saudagar",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3,
"releaseYear": "1961",
"releaseyear": "1961",
"showGoodName": "Movies ",
"views": 1700
},
{
"channelType": "",
"duration": "1:43:18",
"episodeno": 0,
"genre": "Thriller",
"genreList": [
"Thriller"
],
"genres": [
{
"personName": "Thriller"
}
],
"id": 13238,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/sikandar_movie.jpg",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/sikandar_movie.jpg",
"language": "Hindi",
"name": "Sikandar",
"productId": 13238,
"productMasterId": 4286,
"productMasterName": "Sikandar",
"productName": "Sikandar",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3,
"releaseYear": "2009",
"releaseyear": "2009",
"showGoodName": "Movies ",
"views": 2165
},
{
"channelType": "",
"duration": "1:10:11",
"episodeno": 0,
"genre": "Drama",
"genreList": [
"Drama"
],
"genres": [
{
"personName": "Drama"
}
],
"id": 1260,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/Apoorva%20Ragangal.jpg",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/Apoorva%20Ragangal.jpg",
"language": "Tamil",
"name": "Apoorva Ragangal",
"productId": 1260,
"productMasterId": 1259,
"productMasterName": "Apoorva Ragangal",
"productName": "Apoorva Ragangal",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3,
"releaseYear": "1975",
"releaseyear": "1975",
"showGoodName": "Movies ",
"views": 12906
},
{
"channelType": "",
"duration": "2:21:00",
"episodeno": 0,
"genre": "Drama",
"genreList": [
"Drama"
],
"genres": [
{
"personName": "Drama"
}
],
"id": 1255,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/Guna.jpg",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/Guna.jpg",
"language": "Tamil",
"name": "Guna",
"productId": 1255,
"productMasterId": 989,
"productMasterName": "Guna",
"productName": "Guna",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3,
"releaseYear": "2003",
"releaseyear": "2003",
"showGoodName": "Movies ",
"views": 5498
},
{
"channelType": "",
"duration": "2:01:48",
"episodeno": 0,
"genre": "Drama",
"genreList": [
"Drama"
],
"genres": [
{
"personName": "Drama"
}
],
"id": 1247,
"imageUrl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/Mouna-Ragam_58.jpg",
"imageurl": "http://vodimages.bigflicks.com/images/vod/movies/160X100/Mouna-Ragam_58.jpg",
"language": "Tamil",
"name": "Mouna Ragam",
"productId": 1247,
"productMasterId": 1246,
"productMasterName": "Mouna Ragam",
"productName": "Mouna Ragam",
"productTypeId": 1,
"productTypeName": "Movie",
"rating": 3,
"releaseYear": "1986",
"releaseyear": "1986",
"showGoodName": "Movies ",
"views": 10833
}
],
"resultSize": 1171,
"pageIndex": "1"
}
]
My classes are given below -
class basicgalary
{
public Items resultList
{
get;
set;
}
}
public class Items
{
public string id
{
get;
set;
}
public string imageUrl
{
get;
set;
}
public string imageurl
{
get;
set;
}
public string language
{
get;
set;
}
public string name
{
get;
set;
}
public string productid
{
get;
set;
}
public string productMasterId
{
get;
set;
}
public int rating
{
get;
set;
}
public string releaseYear
{
get;
set;
}
public string releaseyear
{
get;
set;
}
public string showGoodName
{
get;
set;
}
public string views
{
get;
set;
}
}
public class common
{
public string personname
{
get;
set;
}
}
I tried so much.. but I am not getting the answer that I want.. So please help me....
I'd also recommend use Json.Net. It's pretty powerful and easy to use.
Json.Net
The .NET Framework provides the JavaScriptSerializer Class which is easy to use (in the System.Web.Extensions.dll assembly).
There is an example here: Dictionary to JSON Serialization and Deserialization
You can use JavaScriptConvert.DeserializeObject(). For detailed procedure read this.

Categories