Skip to content

x.json2 decode result wrong value about field order #26503

@kitech

Description

@kitech

Describe the bug

Code: https://play.vlang.io/p/b188f6719d

import x.json2

struct Foo {
	id  string  @[required]
    title string @[required]
}

s1 := '{"id":"sss","title":"ttt","thumb":[{ "url":"i1.jpg","id":"000"}]}'
s2 := '{"title":"ttt","thumb":[{ "url":"i1.jpg","id":"000"}],"id":"sss"}'

f1 := json2.decode[Foo](s1) !
f2 := json2.decode[Foo](s2) !

println('${f1.id} ${f2.id}')

Reproduction Steps

click run

Expected Behavior

output should be:
sss sss

Current Behavior

Output:

000 sss

Possible Solution

No response

Additional Information/Context

No response

V version

V 0.5.0 2332ecf

Environment details (OS name and version, etc.)

|V full version      |V 0.5.0 2332ecff4811b8c97dfda8e825170e9397962519
|:-------------------|:-------------------
|OS                  |linux, Debian GNU/Linux 12 (bookworm) (VM)
|Processor           |2 cpus, 64bit, little endian, Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
|Memory              |0.59GB/2.02GB
|                    |
|V executable        |/home/admin/v/v
|V last modified time|2026-02-02 10:25:33
|                    |
|V home dir          |OK, value: /home/admin/v
|VMODULES            |OK, value: .vmodules
|VTMP                |OK, value: /tmp/v_0
|Current working dir |OK, value: /home/admin/playground
|                    |
|Git version         |git version 2.39.5
|V git status        |N/A
|.git/config present |true
|                    |
|cc version          |cc (Debian 12.2.0-14+deb12u1) 12.2.0
|gcc version         |gcc (Debian 12.2.0-14+deb12u1) 12.2.0
|clang version       |Debian clang version 14.0.6
|tcc version         |tcc version 0.9.28rc 2025-02-13 HEAD@f8bd136d (x86_64 Linux)
|tcc git status      |Error: fatal: detected dubious ownership in repository at '/home/admin/v/thirdparty/tcc'
To add an exception for this directory, call:

	git config --global --add safe.directory /home/admin/v/thirdparty/tcc
 Error: fatal: detected dubious ownership in repository at '/home/admin/v/thirdparty/tcc'
To add an exception for this directory, call:

	git config --global --add safe.directory /home/admin/v/thirdparty/tcc

|emcc version        |N/A
|glibc version       |ldd (Debian GLIBC 2.36-9+deb12u10) 2.36

Note

You can use the 👍 reaction to increase the issue's priority for developers.

Please note that only the 👍 reaction to the issue itself counts as a vote.
Other reactions and those to comments will not be taken into account.

Metadata

Metadata

Labels

BugThis tag is applied to issues which reports bugs.Modules: x.json2Bugs related to *only* x.json2 (the pure V implementation)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions