Skip to content

Commit 2e6d73d

Browse files
x.json2: let examples/news_fetcher.v use decoder2 (#25353)
1 parent 85ed3f2 commit 2e6d73d

3 files changed

Lines changed: 17 additions & 11 deletions

File tree

‎examples/news_fetcher.v‎

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Use of this source code is governed by an MIT license
33
// that can be found in the LICENSE file.
44
import net.http
5-
import x.json2
5+
import x.json2.decoder2
66
import sync.pool
77

88
struct Story {
@@ -16,9 +16,8 @@ fn worker_fetch(mut p pool.PoolProcessor, cursor int, worker_id int) voidptr {
1616
println('failed to fetch data from /v0/item/${id}.json')
1717
return pool.no_result
1818
}
19-
story := json2.decode[Story](resp.body) or {
19+
story := decoder2.decode[Story](resp.body) or {
2020
println('failed to decode a story')
21-
// println(resp.body)
2221
return pool.no_result
2322
}
2423
println('# ${cursor + 1}) ${story.title} | ${story.url}')
@@ -31,14 +30,12 @@ fn main() {
3130
println('failed to fetch data from /v0/topstories.json')
3231
return
3332
}
34-
// TODO bring back once json2 can decode []int
35-
/*
36-
ids := json2.decode[[]int](resp.body) or {
37-
println('failed to decode topstories.json $err')
33+
34+
ids := decoder2.decode[[]int](resp.body) or {
35+
println('failed to decode topstories.json ${err}')
3836
return
39-
}#[0..10]
40-
*/
41-
ids := resp.body.replace_once('[', '').replace_once(']', '').split(',').map(it.int())#[0..30]
37+
}#[0..30]
38+
4239
mut fetcher_pool := pool.new_pool_processor(
4340
callback: worker_fetch
4441
)

‎vlib/x/json2/decoder2/decode.v‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ fn (mut decoder Decoder) decode_value[T](mut val T) ! {
456456
// field loop
457457
for {
458458
if current_field_info == unsafe { nil } {
459-
decoder.current_node = decoder.current_node.next.next // skip value
459+
decoder.current_node = decoder.current_node.next // skip value
460460

461461
break
462462
}

‎vlib/x/json2/decoder2/tests/decode_struct_test.v‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,12 @@ fn test_option_types() {
8585
assert false, 'Should not return none'
8686
}
8787
}
88+
89+
struct Story {
90+
}
91+
92+
fn test_issue_25347() {
93+
t := '{"k":[1,2,3,4,5,6,7,8,9]}'
94+
json.decode[Story](t) or { assert false }
95+
assert true
96+
}

0 commit comments

Comments
 (0)