From f94fa74a957971b7fd0a2bcd452ff6453c283f39 Mon Sep 17 00:00:00 2001 From: gechandesu <47027335+gechandesu@users.noreply.github.com> Date: Wed, 28 Jan 2026 12:28:05 +0300 Subject: [PATCH] x.json2: rename Any.arr() to Any.as_array() for consistency with as_map(), as_map_of_string(); deprecate Any.arr() (#26455) --- cmd/tools/vls.v | 4 +-- examples/get_weather/get_weather.v | 6 ++-- .../skip_unused/generic_call_from_json.vv | 4 +-- vlib/x/json2/README.md | 2 +- vlib/x/json2/json2.v | 7 ++++ vlib/x/json2/tests/any_test.v | 34 +++++++++---------- vlib/x/json2/tests/decoder_test.v | 2 +- vlib/x/json2/tests/json2_tests/decoder_test.v | 2 +- 8 files changed, 34 insertions(+), 27 deletions(-) diff --git a/cmd/tools/vls.v b/cmd/tools/vls.v index ca211f117..0071bb9b2 100644 --- a/cmd/tools/vls.v +++ b/cmd/tools/vls.v @@ -151,13 +151,13 @@ fn (upd VlsUpdater) download_prebuilt() ! { upd.log('Finding prebuilt executables from GitHub release..') resp := http.get('https://api.github.com/repos/vlang/vls/releases')! - releases_json := json2.decode[json2.Any](resp.body)!.arr() + releases_json := json2.decode[json2.Any](resp.body)!.as_array() if releases_json.len == 0 { return error('Unable to fetch latest VLS release data: No releases found.') } latest_release := releases_json[0].as_map() - assets := latest_release['assets']!.arr() + assets := latest_release['assets']!.as_array() mut checksum_asset_idx := -1 mut exec_asset_idx := -1 diff --git a/examples/get_weather/get_weather.v b/examples/get_weather/get_weather.v index 0920b944c..68ea81e04 100644 --- a/examples/get_weather/get_weather.v +++ b/examples/get_weather/get_weather.v @@ -54,11 +54,11 @@ fn translate(q string, sl string, tl string) !string { json_resp := json.decode[json.Any](resp.body)! - a := json_resp.arr() + a := json_resp.as_array() if a.len > 0 { - a0 := a[0].arr() + a0 := a[0].as_array() if a0.len > 0 { - a00 := a0[0].arr() + a00 := a0[0].as_array() if a00.len > 0 { return a00[0].str() } diff --git a/vlib/v/tests/skip_unused/generic_call_from_json.vv b/vlib/v/tests/skip_unused/generic_call_from_json.vv index de9a739ff..24fc41ea9 100644 --- a/vlib/v/tests/skip_unused/generic_call_from_json.vv +++ b/vlib/v/tests/skip_unused/generic_call_from_json.vv @@ -4,9 +4,9 @@ fn f() ! { j := json2.decode[json2.Any]('')! m := j.as_map() myarr := m['myarr'] or { panic(error) } - m2 := myarr.arr() + m2 := myarr.as_array() for mc in m2 { - parts := mc.arr() + parts := mc.as_array() // Compiler error occurs here --> first := parts[0].str() second := parts[1].str() diff --git a/vlib/x/json2/README.md b/vlib/x/json2/README.md index 2fc9a0410..ae8dfa1fd 100644 --- a/vlib/x/json2/README.md +++ b/vlib/x/json2/README.md @@ -153,7 +153,7 @@ fn (mut p Person) from_json(f json2.Any) { `x.json2` provides methods for turning `Any` types into usable types. The following list shows the possible outputs when casting a value to an incompatible type. -1. Casting non-array values as array (`arr()`) will return an array with the value as the content. +1. Casting non-array values with `as_array()` will return an array with the value as the content. 2. Casting non-map values as map (`as_map()`) will return a map with the value as the content. 3. Casting non-string values to string (`str()`) will return the JSON string representation of the value. diff --git a/vlib/x/json2/json2.v b/vlib/x/json2/json2.v index 269d7ab99..251033b7e 100644 --- a/vlib/x/json2/json2.v +++ b/vlib/x/json2/json2.v @@ -238,7 +238,14 @@ pub fn (f Any) bool() bool { } // arr uses `Any` as an array. +@[deprecated: 'use as_array() instead'] +@[deprecated_after: '2026-03-27'] pub fn (f Any) arr() []Any { + return f.as_array() +} + +// as_array uses `Any` as an array. +pub fn (f Any) as_array() []Any { if f is []Any { return f } else if f is map[string]Any { diff --git a/vlib/x/json2/tests/any_test.v b/vlib/x/json2/tests/any_test.v index 9db959304..e3da2e802 100644 --- a/vlib/x/json2/tests/any_test.v +++ b/vlib/x/json2/tests/any_test.v @@ -287,23 +287,23 @@ fn test_as_map_of_strings() { } } -fn test_arr() { - assert sample_data['u8'] or { 0 }.arr()[0].u8() == 1 - assert sample_data['u16'] or { 0 }.arr()[0].u16() == 2 - assert sample_data['u32'] or { 0 }.arr()[0].u32() == 3 - assert sample_data['u64'] or { 0 }.arr()[0].u64() == 4 - assert sample_data['i8'] or { 0 }.arr()[0].i8() == 5 - assert sample_data['i16'] or { 0 }.arr()[0].i16() == 6 - assert sample_data['i32'] or { 0 }.arr()[0].i32() == 7 - assert sample_data['int'] or { 0 }.arr()[0].int() == 8 - assert sample_data['i64'] or { 0 }.arr()[0].i64() == 9 - assert sample_data['f32'] or { 0 }.arr()[0].f32() == 2.3 - assert sample_data['f64'] or { 0 }.arr()[0].f64() == 1.283 - assert sample_data['bool'] or { 0 }.arr()[0].bool() == false - assert sample_data['str'] or { 0 }.arr()[0].str() == 'test' - assert is_null(sample_data['null'] or { 0 }.arr()[0]) == true - assert sample_data['arr'] or { 0 }.arr()[0].str() == 'lol' - assert sample_data['obj'] or { 0 }.arr()[0].int() == 10 +fn test_as_array() { + assert sample_data['u8'] or { 0 }.as_array()[0].u8() == 1 + assert sample_data['u16'] or { 0 }.as_array()[0].u16() == 2 + assert sample_data['u32'] or { 0 }.as_array()[0].u32() == 3 + assert sample_data['u64'] or { 0 }.as_array()[0].u64() == 4 + assert sample_data['i8'] or { 0 }.as_array()[0].i8() == 5 + assert sample_data['i16'] or { 0 }.as_array()[0].i16() == 6 + assert sample_data['i32'] or { 0 }.as_array()[0].i32() == 7 + assert sample_data['int'] or { 0 }.as_array()[0].int() == 8 + assert sample_data['i64'] or { 0 }.as_array()[0].i64() == 9 + assert sample_data['f32'] or { 0 }.as_array()[0].f32() == 2.3 + assert sample_data['f64'] or { 0 }.as_array()[0].f64() == 1.283 + assert sample_data['bool'] or { 0 }.as_array()[0].bool() == false + assert sample_data['str'] or { 0 }.as_array()[0].str() == 'test' + assert is_null(sample_data['null'] or { 0 }.as_array()[0]) == true + assert sample_data['arr'] or { 0 }.as_array()[0].str() == 'lol' + assert sample_data['obj'] or { 0 }.as_array()[0].int() == 10 } fn test_bool() { diff --git a/vlib/x/json2/tests/decoder_test.v b/vlib/x/json2/tests/decoder_test.v index de456e104..d0f225fa8 100644 --- a/vlib/x/json2/tests/decoder_test.v +++ b/vlib/x/json2/tests/decoder_test.v @@ -19,7 +19,7 @@ fn test_raw_decode_number() { fn test_raw_decode_array() { raw_arr := json.decode[json.Any]('["Foo", 1]')! - arr := raw_arr.arr() + arr := raw_arr.as_array() assert arr[0] or { 0 }.str() == 'Foo' assert arr[1] or { 0 }.int() == 1 } diff --git a/vlib/x/json2/tests/json2_tests/decoder_test.v b/vlib/x/json2/tests/json2_tests/decoder_test.v index 13ca29ac2..177e12589 100644 --- a/vlib/x/json2/tests/json2_tests/decoder_test.v +++ b/vlib/x/json2/tests/json2_tests/decoder_test.v @@ -19,7 +19,7 @@ fn test_raw_decode_number() { fn test_raw_decode_array() { raw_arr := json.decode[json.Any]('["Foo", 1]')! - arr := raw_arr.arr() + arr := raw_arr.as_array() assert arr[0] or { 0 }.str() == 'Foo' assert arr[1] or { 0 }.int() == 1 } -- 2.39.5