{
"Name": "SP500",
"Positions":
[
{
"Ticker": "AOS",
"Size": 100,
},
{
"Ticker": "ABT",
"Size": 100,
}
]
}
5 Réponses :
Utilisez ceci:
public class Portfolio
{
public string Name {get; set;}
public List<Position> Positions {get; set;}
}
Je ne veux pas utiliser code> code> Je souhaite utiliser dictionnaire code> comme indiqué dans ma question
Vous pouvez modifier votre modèle en:
public class Portfolio
{
public string Name {get; set;}
public List<Position> Positions {get; set;}
}
Je ne veux pas utiliser code> code> Je souhaite utiliser dictionnaire code> comme indiqué dans ma question
"Comme indiqué dans ma question" I> Où?
Y a-t-il quelque chose de mal à changer votre modèle d'objet pour le portefeuille au ci-dessous? Je pense que cela serait sérialisé comment vous voudriez. Vous devrez probablement utiliser LINQ pour trouver l'objet que vous souhaitez dans la liste. Cela suppose également qu'il y aura toujours un ticker unique
public class Portfolio
{
public string Name {get; set;}
public List<Position> Positions {get; set;}
}
Je ne veux pas utiliser code> code> Je souhaite utiliser dictionnaire code> comme indiqué dans ma question
Vous pouvez ajouter un personnalisé Tout d'abord, définissez le convertisseur suivant: p> puis appliquez-le à votre modèle suit: p> ou, utilisez-le dans des paramètres comme suit: p> bien sûr que le convertisseur suppose que la clé de dictionnaire et le nom du ticker est identique. P> Demo Fiddle ici . P> P> P> P> P> P> P> P> P> P > jsonconverter code> A> Pour Dictionnaire
facilement L'option la plus simple consistera à écrire un modèle distinct utilisé à des fins de sérialisation:
classes: p> utilisation: p> //The portfolio class you want to work with (dictionary property)
var portfolio = new Portfolio()
{
Name = "MyPortfolio",
Positions = new Dictionary<string, UserQuery.Position>()
{
{ "AOS", new Position() { Size = 10, Ticker = "AOS"}},
{ "ABT", new Position() { Size = 100, Ticker = "ABT"}}
}
};
//Only used for serialization
var forSerialization = new PortfolioForSerialization()
{
Name = portfolio.Name,
Positions = portfolio.Positions.Select(p => p.Value).ToArray()
};
string serialized = JsonConvert.SerializeObject(forSerialization);
//On deserialization, map the array back to a dictionary
var deserializedPortfolio = JsonConvert.DeserializeObject<PortfolioForSerialization>(serialized);
//Map the serialization model back to your working model
var workingPortfolio = new Portfolio()
{
Name = deserializedPortfolio.Name,
Positions = deserializedPortfolio.Positions.ToDictionary(k => k.Ticker, v => v)
};