我仍在寻找将日期转换为 Json 的最佳方法。我需要得到这样的结构:
“标签”:{
“ python ”:1、
“ java ”:3,
“Linux”:8
}
我的第一次尝试是使用关联数组: How to convert associative array to key:value?
但后来我明白这不是最好的变体。所以我决定创建结构数组。
接下来的代码只是创建结构的测试数组并用测试数据填充它:
struct MyData
{
string name;
int value;
}
MyData [] mydata;
string mystr = "qwert";
foreach (i; 1..5)
{
MyData md;
md.name = to!(string)(mystr[i]) ~ to!(string)(mystr[i]); // just to have double letters like: "qq"
md.value = i;
mydata ~= md;
}
因此,在下一步中,我可以使用 foreach
迭代结构数组,并使用字符串连接创建正确的 json,例如:
string tagsList = `"` ~ data.name ~ `":` ~ to!string(data.value) ~ `,`;
write(tagsList);
结果将是这样的:
"ww":1,"ee":2,"rr":3,"tt":4,
但是它看起来非常脏的代码,我需要在末尾删除逗号符号。
我在 google 上搜索并发现了几个模块,例如 painlessjson
,它们允许我将结构序列化为 json,但它的工作方式不同。它采用了结构中元素的名称,我得到的信息如下:
{"名称":"ww","值":1}
那么我应该使用什么语言来获得正确的结果?
最佳答案
使用 std.json
为您的结构创建自定义序列化例程并不是一个大问题。
import std.stdio;
import std.json;
struct Data
{
string name;
int value;
void serialize(ref JSONValue jv)
{
jv[name] = value;
}
}
void main(string[] args)
{
Data[] data = [Data("a",1), Data("b",2)];
JSONValue obj = parseJSON("{}");
foreach(Data d; data)
d.serialize(obj);
writeln(obj.toPrettyString);
}
正如您所看到的,代码很干净,只需编写一个 LOC。它以您期望的格式打印:
{ "a": 1, "b": 2 }
关于json - 将结构转换为 Json 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32683727/