如何使用JObject.FromObject获取没有propertyname的json

时间:2015-03-24 00:56:54

标签: json json.net

我使用NewtonSoft JSON.Net。我有一个namevalue对的集合,我需要得到一个看起来像的json { “担架床”: “1”, “MAC”: “2”, “担架床”: “8”} 请注意,我在这里可以有重复的名称。

我有两个选择 a)我可以使用Dictionary作为我的底层集合,当我这样做时,我得到了所需的结果,但我无法添加重复的密钥。 b)我有一个KeyValuePair列表,但在这种情况下,结果json不在我想要的结构中。

知道如何获得理想的结果吗?谢谢!

        var listData = new List<KeyValuePair<string, string>>();
        listData.Add(new KeyValuePair<string, string>("cot", "1"));
        listData.Add(new KeyValuePair<string, string>("mat", "1"));
        listData.Add(new KeyValuePair<string, string>("cot", "2"));

        var dicData = new Dictionary<string, string>();
        dicData.Add("cot", "1");
        dicData.Add("mat", "1");

        Console.WriteLine("Output from LIST");
        Console.WriteLine(JArray.FromObject(listData));
        Console.WriteLine();
        Console.WriteLine("Output from Dictionary");
        Console.WriteLine(JObject.FromObject(dicData));

LIST的输出

[
  {
    "Key": "cot",
    "Value": "1"
  },
  {
    "Key": "mat",
    "Value": "1"
  },
  {
    "Key": "cot",
    "Value": "2"
  }
]

字典输出

{
  "cot": "1",
  "mat": "1"
}

1 个答案:

答案 0 :(得分:0)

JSON '{"cot":"1","mac":"2","cot":"8"}' 将解析为javscript对象: {"cot":"8","mac":"2"}

尝试 dicData.Add("cot", "8") 看看它是否能得到你想要的东西。

您还可以尝试连接字符串,直到获得所需的JSON。 像

var jsonOutput = "{"
//for each key value...
jsonOutput += "key : "+ value.toString + ","
//...etc
//then remove the last trailing comma, and add a "}"