Удалить свойства из строки Json с помощью newtonsoft [duplicate]

Чтобы защитить вашу переменную, совместно используемую другим экземпляром, вам нужно создать новую переменную экземпляра каждый раз, когда вы создаете экземпляр. Когда вы объявляете переменную внутри класса, она является переменной класса и совместно используется всем экземпляром. Если вы хотите сделать это, например, необходимо использовать метод init для повторной инициализации переменной, ссылаясь на функцию экземпляра

init (). Эта специальная функция вызывается всякий раз, когда создается новый объект этого класса.

Этот тип функции также называется конструкторами в объектно-ориентированном программировании (ООП). Обычно мы используем его для инициализации всех переменных.

Например:

class example:
    list=[] #This is class variable shared by all instance
    def __init__(self):
        self.list = [] #This is instance variable referred to specific instance
15
задан Vonetizer 22 August 2015 в 06:14
поделиться

2 ответа

Существуют два основных подхода:

Либо

  • Разделите его на JObject (например, JObject.Parse(json) ); изменить график объекта , обновив вложенные объекты JObject во время перемещения; сериализуйте исходный JObject, который теперь представляет измененный граф объектов.

Или

  • десериализуйте JSON для сильно типизированных объектов без дополнительные свойства. Свойства, которые не присутствуют в типах C #, будут отключены. Затем сериализовал только десериализованный объект.
10
ответ дан user2864740 26 August 2018 в 04:25
поделиться

существует метод Remove (не уверен, что он был во время этого вопроса)

Например:

var raw = "your json text";
var o = (Newtonsoft.Json.Linq.JObject)JsonConvert.DeserializeObject(raw);
o.Property("totalItems").Remove()
return o.ToString();

или для вашего точного ввода

var parent = JsonConvert.DeserializeObject<JObject>(raw);
((JArray)parent.Property("results").Value)
    .Select(jo => (JObject)jo)
    .ToList()
    .ForEach(x => 
        x
            .Properties()
            .ToList()
            .ForEach(p =>
            {
                if (p.Name != "name")
                    p.Remove();
            }))
    //.Dump();
    ;
12
ответ дан Maslow 26 August 2018 в 04:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: