C # JsonSerialize без имен членов - PullRequest
0 голосов
/ 17 мая 2011

У меня есть следующие классы, которые я люблю сериализовать в Json. Я сейчас получаю что-то вроде этого

 var pgdata =   {"SeriesList":[{"label":"Fund","data":[{"Year":2000,"RateOfReturn":0.02},{"Year":2009,"RateOfReturn":0.03}]},{"label":"Benchmark","data":[{"Year":2000,"RateOfReturn":0.024},{"Year":2009,"RateOfReturn":0.032}]}]} ;

Мне нравится получать что-то вроде этого

var pgdata =   {"SeriesList":[{"label":"Fund","data":[[2000,0.02],[2009,0.03]]},{"label":"Benchmark","data":[[2000,0.024],[2009,0.032]]}]} ;

C # код:

public class JsonPerformGraphData
    {
        public List<Series> SeriesList = new List<Series>();

        public Series GetSeries(string name)
        {
            foreach (Series s in SeriesList)
            {
                if (s.label == name)
                    return s;
            }

            Series series = new Series(name);
            SeriesList.Add(series);
            return series;
        }

        public void Add(PerformanceGraphItem ppgi)
        {
            Series s = GetSeries(ppgi.PerformanceGraphSeries.Name);
            s.addItem(ppgi.Year, ppgi.RateOfReturn);
        }


        public class Series
        {
            public string label;
            public List<Data> data = new List<Data>();

            public Series(String name)
            {
                label = name;
            }

            public void addItem(short year, double rateOfReturn)
            {

                data.Add(new Data(year,rateOfReturn));

            }
        }

        public class Data
        {
            public short Year;
            public double RateOfReturn;

            public Data(short year, double rateOfReturn)
            {
                Year = year;
                RateOfReturn = rateOfReturn;
            }
        }

    }

1 Ответ

1 голос
/ 17 мая 2011

Есть ли конкретная причина, по которой вы не используете json.NET ? Это уже решило проблему сериализации для разработчиков на C #, и есть довольно мало причин, чтобы не использовать ее. Единственная проблема, с которой я столкнулся, связана с его негибкостью при использовании объектов интерфейса при десериализации из JSON, но если вы не проводите модульное тестирование этого класса, это не должно быть проблемой (и это не похоже на вас).

Для ваших целей json.NET должен предоставить вам нужный вывод без лишних хлопот и суеты при запуске сериализатора в одиночку.

edit: Кроме того, для ясности, json.NET поддерживает сериализацию без имен членов так, как вам нужно. Просто добавьте атрибут JsonProperty к каждому члену.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...