2015-03-24 2 views
0

J'utilise NewtonSoft JSON.Net. J'ai une collection de paire namevalue et je dois obtenir un json qui ressemble à {"cot": "1", "mac": "2", "cot": "8"} Notez que je peux avoir un doublon noms ici. J'ai deux options ici a) je peux utiliser le dictionnaire comme ma collection sous-jacente et quand je fais, j'obtiens le résultat désiré, mais je ne peux pas ajouter la clé en double. b) J'ai une liste de KeyValuePair mais dans ce cas, le résultat json n'est pas dans la structure que je voulais.Comment utiliser JObject.FromObject pour obtenir un json sans propertyname

Une idée de comment obtenir le résultat souhaité? Merci!

 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)); 

sortie de la liste

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

sortie du Dictionnaire

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

Répondre

0

Le JSON '{"cot":"1","mac":"2","cot":"8"}' analysera à un objet javscript: {"cot":"8","mac":"2"}.

Essayez dicData.Add("cot", "8") et de voir si elle obtient ce que vous voulez.

Vous pouvez également essayer de concaténer des chaînes jusqu'à obtenir le JSON souhaité. Comme

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

merci pour le commentaire. dicData.Add ("cot", "8") va échouer car cot est déjà une clé dans le dictionnaire. Cela dit, je n'ai pas réalisé que javascript va convertir le JSON en une collection de deux éléments. Ce qui signifie que je ne peux pas résoudre ce problème avec le format json que j'ai choisi. Donc, j'ai répondu à ma question. Merci :)! – Murali