我想创建一个JSON proto3兼容的字符串,其中包括如下部分:
"foo": [[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]
我不知道该怎么做。这似乎是一个List<List<T>>
问题(已经discussed),但是当我向Newtonsoft Json.NET提供这种解决方案时,我得到了:
"foo": [ "bar": [1.0, 2.0], "bar": [3.0, 4.0], "bar": [5.0, 6.0]]
我只尝试了“ Newtonsoft Json.NET”,但是这个问题对任何其他JSON库或自定义编码方法都是开放的。该怎么办?
编辑: 这是一个序列化问题。我无法控制解串器代码。
答案 0 :(得分:2)
我不确定您要去哪里出错,但是以下代码可以正常运行:
var lists = new List<List<double>>
{
new List<double> {1.0, 2.0},
new List<double> {3.0, 4.0}
};
var test = (lists, "test");
Console.Write(JsonConvert.SerializeObject(test));
输出:
{"Item1":[[1.0,2.0],[3.0,4.0]],"Item2":"test"}
您可以用一些示例代码来编辑帖子吗?
答案 1 :(得分:1)
尝试一下:
string str = "{ \"foo\": [[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]] }";
var mytype = new { foo = new List<List<decimal>>() };
var mydeserializedtype = JsonConvert.DeserializeAnonymousType(str, mytype);
string str2 = JsonConvert.SerializeObject(mydeserializedtype);
或更经典
class myclass
{
public List<List<decimal>> foo { get; set; }
}
….
string str = "{ \"foo\": [[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]] }";
myclass my = JsonConvert.DeserializeObject<myclass>(str);
string str2 = JsonConvert.SerializeObject(my);