Convert Json response to object array
Clash Royale CLAN TAG#URR8PPP
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;
up vote
3
down vote
favorite
I'm looking for the best solution.
Here is a response from server and i need to get Organizations list:
Content-Type:application/json;charset=UTF-8
{
"code": 0,
"message": "success",
"organizations": [
"organization_id": "10234695",
"name": "Zillum",
"contact_name": "John Smith",
"email": "johnsmith@zillum.com",
"is_default_org": false,
"language_code": "en",
"fiscal_year_start_month": 0,
"account_created_date": "2016-02-18",
"time_zone": "PST",
"is_org_active": true,
"currency_id": "460000000000097",
"currency_code": "USD",
"currency_symbol": "$",
"currency_format": "###,##0.00",
"price_precision": 2
,
...,
...
]
Here is my convert method:
var contentJson = await SendRequest(request);
var contentJo = (JObject)JsonConvert.DeserializeObject(contentJson);
var organizationsJArray = contentJo["organizations"]
.Value<JArray>();
var organizations = organizationsJArray.ToObject<List<Organization>>();
Code works, but I'm looking for a better Convert Method. Can I do without converting to JArray?
c# json
add a comment |
up vote
3
down vote
favorite
I'm looking for the best solution.
Here is a response from server and i need to get Organizations list:
Content-Type:application/json;charset=UTF-8
{
"code": 0,
"message": "success",
"organizations": [
"organization_id": "10234695",
"name": "Zillum",
"contact_name": "John Smith",
"email": "johnsmith@zillum.com",
"is_default_org": false,
"language_code": "en",
"fiscal_year_start_month": 0,
"account_created_date": "2016-02-18",
"time_zone": "PST",
"is_org_active": true,
"currency_id": "460000000000097",
"currency_code": "USD",
"currency_symbol": "$",
"currency_format": "###,##0.00",
"price_precision": 2
,
...,
...
]
Here is my convert method:
var contentJson = await SendRequest(request);
var contentJo = (JObject)JsonConvert.DeserializeObject(contentJson);
var organizationsJArray = contentJo["organizations"]
.Value<JArray>();
var organizations = organizationsJArray.ToObject<List<Organization>>();
Code works, but I'm looking for a better Convert Method. Can I do without converting to JArray?
c# json
You're not handling errors and corner-cases but, well, that might be OK...is there a specific goal? To me this small snippet looks OK (I have, maybe, just few opinionated minor style comments) but you may have some more specific issues in mind (performance? maintainability?)
– Adriano Repetti
Jun 4 at 9:35
You can use theList<Organization>
in the same way as a generic parameter for theDeserializeObject
method. There's no need to create theJObject
first.
– t3chb0t
Jun 4 at 9:38
@t3chb0t it cannot be convert directly, because root object it's not an Array
– Nikita Goncharuk
Jun 4 at 10:15
oh, ok, then put it in another object that has a property of this type.
– t3chb0t
Jun 4 at 10:16
@AdrianoRepetti Yeah, thanks a lot. I'm using error handling. I thought that there is a shorter conversion, because I'm not familiar with the methods Newtonsoft.Json
– Nikita Goncharuk
Jun 4 at 10:23
add a comment |
up vote
3
down vote
favorite
up vote
3
down vote
favorite
I'm looking for the best solution.
Here is a response from server and i need to get Organizations list:
Content-Type:application/json;charset=UTF-8
{
"code": 0,
"message": "success",
"organizations": [
"organization_id": "10234695",
"name": "Zillum",
"contact_name": "John Smith",
"email": "johnsmith@zillum.com",
"is_default_org": false,
"language_code": "en",
"fiscal_year_start_month": 0,
"account_created_date": "2016-02-18",
"time_zone": "PST",
"is_org_active": true,
"currency_id": "460000000000097",
"currency_code": "USD",
"currency_symbol": "$",
"currency_format": "###,##0.00",
"price_precision": 2
,
...,
...
]
Here is my convert method:
var contentJson = await SendRequest(request);
var contentJo = (JObject)JsonConvert.DeserializeObject(contentJson);
var organizationsJArray = contentJo["organizations"]
.Value<JArray>();
var organizations = organizationsJArray.ToObject<List<Organization>>();
Code works, but I'm looking for a better Convert Method. Can I do without converting to JArray?
c# json
I'm looking for the best solution.
Here is a response from server and i need to get Organizations list:
Content-Type:application/json;charset=UTF-8
{
"code": 0,
"message": "success",
"organizations": [
"organization_id": "10234695",
"name": "Zillum",
"contact_name": "John Smith",
"email": "johnsmith@zillum.com",
"is_default_org": false,
"language_code": "en",
"fiscal_year_start_month": 0,
"account_created_date": "2016-02-18",
"time_zone": "PST",
"is_org_active": true,
"currency_id": "460000000000097",
"currency_code": "USD",
"currency_symbol": "$",
"currency_format": "###,##0.00",
"price_precision": 2
,
...,
...
]
Here is my convert method:
var contentJson = await SendRequest(request);
var contentJo = (JObject)JsonConvert.DeserializeObject(contentJson);
var organizationsJArray = contentJo["organizations"]
.Value<JArray>();
var organizations = organizationsJArray.ToObject<List<Organization>>();
Code works, but I'm looking for a better Convert Method. Can I do without converting to JArray?
c# json
edited Jun 4 at 9:39
t3chb0t
31.9k54195
31.9k54195
asked Jun 4 at 8:53
Nikita Goncharuk
183
183
You're not handling errors and corner-cases but, well, that might be OK...is there a specific goal? To me this small snippet looks OK (I have, maybe, just few opinionated minor style comments) but you may have some more specific issues in mind (performance? maintainability?)
– Adriano Repetti
Jun 4 at 9:35
You can use theList<Organization>
in the same way as a generic parameter for theDeserializeObject
method. There's no need to create theJObject
first.
– t3chb0t
Jun 4 at 9:38
@t3chb0t it cannot be convert directly, because root object it's not an Array
– Nikita Goncharuk
Jun 4 at 10:15
oh, ok, then put it in another object that has a property of this type.
– t3chb0t
Jun 4 at 10:16
@AdrianoRepetti Yeah, thanks a lot. I'm using error handling. I thought that there is a shorter conversion, because I'm not familiar with the methods Newtonsoft.Json
– Nikita Goncharuk
Jun 4 at 10:23
add a comment |
You're not handling errors and corner-cases but, well, that might be OK...is there a specific goal? To me this small snippet looks OK (I have, maybe, just few opinionated minor style comments) but you may have some more specific issues in mind (performance? maintainability?)
– Adriano Repetti
Jun 4 at 9:35
You can use theList<Organization>
in the same way as a generic parameter for theDeserializeObject
method. There's no need to create theJObject
first.
– t3chb0t
Jun 4 at 9:38
@t3chb0t it cannot be convert directly, because root object it's not an Array
– Nikita Goncharuk
Jun 4 at 10:15
oh, ok, then put it in another object that has a property of this type.
– t3chb0t
Jun 4 at 10:16
@AdrianoRepetti Yeah, thanks a lot. I'm using error handling. I thought that there is a shorter conversion, because I'm not familiar with the methods Newtonsoft.Json
– Nikita Goncharuk
Jun 4 at 10:23
You're not handling errors and corner-cases but, well, that might be OK...is there a specific goal? To me this small snippet looks OK (I have, maybe, just few opinionated minor style comments) but you may have some more specific issues in mind (performance? maintainability?)
– Adriano Repetti
Jun 4 at 9:35
You're not handling errors and corner-cases but, well, that might be OK...is there a specific goal? To me this small snippet looks OK (I have, maybe, just few opinionated minor style comments) but you may have some more specific issues in mind (performance? maintainability?)
– Adriano Repetti
Jun 4 at 9:35
You can use the
List<Organization>
in the same way as a generic parameter for the DeserializeObject
method. There's no need to create the JObject
first.– t3chb0t
Jun 4 at 9:38
You can use the
List<Organization>
in the same way as a generic parameter for the DeserializeObject
method. There's no need to create the JObject
first.– t3chb0t
Jun 4 at 9:38
@t3chb0t it cannot be convert directly, because root object it's not an Array
– Nikita Goncharuk
Jun 4 at 10:15
@t3chb0t it cannot be convert directly, because root object it's not an Array
– Nikita Goncharuk
Jun 4 at 10:15
oh, ok, then put it in another object that has a property of this type.
– t3chb0t
Jun 4 at 10:16
oh, ok, then put it in another object that has a property of this type.
– t3chb0t
Jun 4 at 10:16
@AdrianoRepetti Yeah, thanks a lot. I'm using error handling. I thought that there is a shorter conversion, because I'm not familiar with the methods Newtonsoft.Json
– Nikita Goncharuk
Jun 4 at 10:23
@AdrianoRepetti Yeah, thanks a lot. I'm using error handling. I thought that there is a shorter conversion, because I'm not familiar with the methods Newtonsoft.Json
– Nikita Goncharuk
Jun 4 at 10:23
add a comment |
2 Answers
2
active
oldest
votes
up vote
2
down vote
accepted
Given that you are already using the ToObject
, consider simplifying the code for readability and the advantage of not having to convert anything.
var contentJson = await SendRequest(request);
dynamic response = JsonConvert.DeserializeObject(contentJson);
List<Organization> organizations = response.organizations.ToObject<List<Organization>>();
The actual response appears to be of no concern so using a dynamic
simplifies things. Converting back to strongly typed objects by calling ToObject<T>
was a good choice and should work out fine.
add a comment |
up vote
1
down vote
Json.Net will (by default) accept missing fields without a problem when doing typed deserialization, so I believe you can do:
class ContentData
public List<Organization> organizations;
...
var contentData = JsonConvert.DeserializeObject<ContentData>(contentJson);
DoSomething(contentData.organizations);
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
Given that you are already using the ToObject
, consider simplifying the code for readability and the advantage of not having to convert anything.
var contentJson = await SendRequest(request);
dynamic response = JsonConvert.DeserializeObject(contentJson);
List<Organization> organizations = response.organizations.ToObject<List<Organization>>();
The actual response appears to be of no concern so using a dynamic
simplifies things. Converting back to strongly typed objects by calling ToObject<T>
was a good choice and should work out fine.
add a comment |
up vote
2
down vote
accepted
Given that you are already using the ToObject
, consider simplifying the code for readability and the advantage of not having to convert anything.
var contentJson = await SendRequest(request);
dynamic response = JsonConvert.DeserializeObject(contentJson);
List<Organization> organizations = response.organizations.ToObject<List<Organization>>();
The actual response appears to be of no concern so using a dynamic
simplifies things. Converting back to strongly typed objects by calling ToObject<T>
was a good choice and should work out fine.
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
Given that you are already using the ToObject
, consider simplifying the code for readability and the advantage of not having to convert anything.
var contentJson = await SendRequest(request);
dynamic response = JsonConvert.DeserializeObject(contentJson);
List<Organization> organizations = response.organizations.ToObject<List<Organization>>();
The actual response appears to be of no concern so using a dynamic
simplifies things. Converting back to strongly typed objects by calling ToObject<T>
was a good choice and should work out fine.
Given that you are already using the ToObject
, consider simplifying the code for readability and the advantage of not having to convert anything.
var contentJson = await SendRequest(request);
dynamic response = JsonConvert.DeserializeObject(contentJson);
List<Organization> organizations = response.organizations.ToObject<List<Organization>>();
The actual response appears to be of no concern so using a dynamic
simplifies things. Converting back to strongly typed objects by calling ToObject<T>
was a good choice and should work out fine.
edited Jun 5 at 9:22
answered Jun 5 at 0:43
Nkosi
1,868619
1,868619
add a comment |
add a comment |
up vote
1
down vote
Json.Net will (by default) accept missing fields without a problem when doing typed deserialization, so I believe you can do:
class ContentData
public List<Organization> organizations;
...
var contentData = JsonConvert.DeserializeObject<ContentData>(contentJson);
DoSomething(contentData.organizations);
add a comment |
up vote
1
down vote
Json.Net will (by default) accept missing fields without a problem when doing typed deserialization, so I believe you can do:
class ContentData
public List<Organization> organizations;
...
var contentData = JsonConvert.DeserializeObject<ContentData>(contentJson);
DoSomething(contentData.organizations);
add a comment |
up vote
1
down vote
up vote
1
down vote
Json.Net will (by default) accept missing fields without a problem when doing typed deserialization, so I believe you can do:
class ContentData
public List<Organization> organizations;
...
var contentData = JsonConvert.DeserializeObject<ContentData>(contentJson);
DoSomething(contentData.organizations);
Json.Net will (by default) accept missing fields without a problem when doing typed deserialization, so I believe you can do:
class ContentData
public List<Organization> organizations;
...
var contentData = JsonConvert.DeserializeObject<ContentData>(contentJson);
DoSomething(contentData.organizations);
answered Jun 5 at 0:55
Errorsatz
3285
3285
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f195795%2fconvert-json-response-to-object-array%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
You're not handling errors and corner-cases but, well, that might be OK...is there a specific goal? To me this small snippet looks OK (I have, maybe, just few opinionated minor style comments) but you may have some more specific issues in mind (performance? maintainability?)
– Adriano Repetti
Jun 4 at 9:35
You can use the
List<Organization>
in the same way as a generic parameter for theDeserializeObject
method. There's no need to create theJObject
first.– t3chb0t
Jun 4 at 9:38
@t3chb0t it cannot be convert directly, because root object it's not an Array
– Nikita Goncharuk
Jun 4 at 10:15
oh, ok, then put it in another object that has a property of this type.
– t3chb0t
Jun 4 at 10:16
@AdrianoRepetti Yeah, thanks a lot. I'm using error handling. I thought that there is a shorter conversion, because I'm not familiar with the methods Newtonsoft.Json
– Nikita Goncharuk
Jun 4 at 10:23