Trong 1.13, các tệp ngôn ngữ Minecraft đã được chuyển từ dạng đa khóa đơn giản = định dạng giá trị sang JSON .
Thử thách
Viết chương trình chuyển đổi từ định dạng ban đầu trả về chuỗi JSON. Có thể lấy đầu vào bằng bất kỳ phương thức nhập chuẩn nào, đầu ra phải được json từ bất kỳ phương thức đầu ra tiêu chuẩn nào
Ví dụ, định dạng ban đầu chứa các dòng có cặp key = value
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
Nên được chuyển đổi thành một đối tượng JSON lớn có key = value
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
Một số chi tiết
- Bất kỳ JSON hợp lệ nào cũng được phép miễn là nó chỉ chứa các cặp khóa / giá trị chính xác. Dấu phẩy được phép vì Minecraft cho phép chúng.
- Những điều duy nhất phải được thoát là trích dẫn. (Không có dòng mới, dấu gạch chéo ngược hoặc những thứ phá vỡ json khác tồn tại trong tệp ngôn ngữ trước 1.13)
- Các dòng trống nên được bỏ qua
- Các dòng chứa chính xác một bằng
Các trường hợp thử nghiệm
Đầu vào:
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
Đầu ra:
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
Đầu vào:
translation.test.none=Hello, world!
translation.test.complex=Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again!
translation.test.escape=%%s %%%s %%%%s %%%%%s
translation.test.invalid=hi %
translation.test.invalid2=hi % s
translation.test.args=%s %s
translation.test.world=world
Đầu ra:
{
"translation.test.none": "Hello, world!",
"translation.test.complex": "Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again!",
"translation.test.escape": "%%s %%%s %%%%s %%%%%s",
"translation.test.invalid": "hi %",
"translation.test.invalid2": "hi % s",
"translation.test.args": "%s %s",
"translation.test.world": "world",
}
Đầu vào:
stat.mineBlock=%1$s Mined
stat.craftItem=%1$s Crafted
stat.useItem=%1$s Used
stat.breakItem=%1$s Depleted
Đầu ra:
{
"stat.mineBlock": "%1$s Mined",
"stat.craftItem": "%1$s Crafted",
"stat.useItem": "%1$s Used",
"stat.breakItem": "%1$s Depleted"
}
=
?
tile.dirt.name
trở thành"block.minecraft.dirt"
?