Panic on MustInt()
an2deg opened this issue · 7 comments
Hi!
I have the following JSON structure:
{"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z","updated":"2013-09-19T09:38:50+02:00"}}],"s":200}
Objx panics on json.Get("d[0].id").Int(). Test:
json, err := objx.FromJSON(`{"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z","updated":"2013-09-19T09:38:50+02:00"}}],"s":200}`)
if !assert.NoError(t, err, "Can't decode output") {
return
}
assert.Equal(t, json.Get("d[0].id").Int(), 9879, "...")
Doesn't JSON make all slices {}interface{}?
Do you think MSISlice() should convert it?
On 19 Sep 2013, at 01:50, Andrew Degtyarev notifications@github.com wrote:
Hi!
I have the following JSON structure:
{"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z"
,"updated":"2013-09-19T09:38:50+02:00"}}],"s":200}
Objx panics on json.Get("d[0].id").Int(). Test:json, err := objx.FromJSON(`{"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z","updated":"2013-09-19T09:38:50+02:00"}}],"s":200}`) if !assert.NoError(t, err, "Can't decode output") { return } if !assert.Equal(t, json.Get("d[0].id").Int(), 9879, "...") { return }
—
Reply to this email directly or view it on GitHub.
JSON decides all integer values to float64. Try this again with float64.
Do you think .int() should try to coerce to int?
Sent from my iPhone
On Sep 19, 2013, at 7:36 AM, Mat Ryer notifications@github.com wrote:
Doesn't JSON make all slices {}interface{}?
Do you think MSISlice() should convert it?
On 19 Sep 2013, at 01:50, Andrew Degtyarev notifications@github.com wrote:
Hi!
I have the following JSON structure:
{"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z"
,"updated":"2013-09-19T09:38:50+02:00"}}],"s":200}
Objx panics on json.Get("d[0].id").Int(). Test:json, err := objx.FromJSON(
{"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z","updated":"2013-09-19T09:38:50+02:00"}}],"s":200}
)if !assert.NoError(t, err, "Can't decode output") {
return
}if !assert.Equal(t, json.Get("d[0].id").Int(), 9879, "...") {
return
}
—
Reply to this email directly or view it on GitHub.
—
Reply to this email directly or view it on GitHub.
No, it is []interface{}.
In my case it is []interface{}{ []map[string]interface{} }
On Thu, Sep 19, 2013 at 3:36 PM, Mat Ryer notifications@github.com wrote:
Doesn't JSON make all slices {}interface{}?
Do you think MSISlice() should convert it?
On 19 Sep 2013, at 01:50, Andrew Degtyarev notifications@github.com
wrote:Hi!
I have the following JSON structure:
{"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z"
,"updated":"2013-09-19T09:38:50+02:00"}}],"s":200}
Objx panics on json.Get("d[0].id").Int(). Test:json, err :=
objx.FromJSON({"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z","updated":"2013-09-19T09:38:50+02:00"}}],"s":200}
)if !assert.NoError(t, err, "Can't decode output") {
return
}if !assert.Equal(t, json.Get("d[0].id").Int(), 9879, "...") {
return
}
—
Reply to this email directly or view it on GitHub.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/8#issuecomment-24738795
.
Andrew Degtyarev
DA-RIPE
Yep, I already did it, but for high level library like objx I expect than I
asked for Int() it will try return int )
On Thu, Sep 19, 2013 at 3:53 PM, Tyler notifications@github.com wrote:
JSON decides all integer values to float64. Try this again with float64.
Do you think .int() should try to coerce to int?
Sent from my iPhone
On Sep 19, 2013, at 7:36 AM, Mat Ryer notifications@github.com wrote:
Doesn't JSON make all slices {}interface{}?
Do you think MSISlice() should convert it?
On 19 Sep 2013, at 01:50, Andrew Degtyarev notifications@github.com
wrote:Hi!
I have the following JSON structure:
{"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z"
,"updated":"2013-09-19T09:38:50+02:00"}}],"s":200}
Objx panics on json.Get("d[0].id").Int(). Test:json, err :=
objx.FromJSON({"d":[{"author":{"displayName":"DemoUser3","id":2},"classes":null,"id":9879,"v":{"code":"","created":"2013-09-19T09:38:50+02:00","published":"0001-01-01T00:00:00Z","updated":"2013-09-19T09:38:50+02:00"}}],"s":200}
)if !assert.NoError(t, err, "Can't decode output") {
return
}if !assert.Equal(t, json.Get("d[0].id").Int(), 9879, "...") {
return
}
—
Reply to this email directly or view it on GitHub.
—
Reply to this email directly or view it on GitHub.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/8#issuecomment-24740055
.
Andrew Degtyarev
DA-RIPE
Yes I agree. We should try our hardest to return what is asked for.
Did the MustInt() at least give you a good panic?
On 19 Sep 2013, at 08:16, Tyler notifications@github.com wrote:
Yes I agree. We should try our hardest to return what is asked for.
—
Reply to this email directly or view it on GitHub.
Yes, I made an error in the example, there should be MustInt() instead of
Int()
On Thu, Sep 19, 2013 at 7:14 PM, Mat Ryer notifications@github.com wrote:
Did the MustInt() at least give you a good panic?
On 19 Sep 2013, at 08:16, Tyler notifications@github.com wrote:
Yes I agree. We should try our hardest to return what is asked for.
—
Reply to this email directly or view it on GitHub.—
Reply to this email directly or view it on GitHubhttps://github.com//issues/8#issuecomment-24756516
.
Andrew Degtyarev
DA-RIPE