Ответы пользователя по тегу JSON
  • C#. Json. Как достать элементы массивов из массива?

    yamaoto
    @yamaoto
    la programmeur
    class Events                                
        {
            public string ts { get; set; }
            public string pts { get; set; }
            public object[][] updates {get;set;}
        }
    ...
    Events events = JsonConvert.DeserializeObject<Events>(json);
    var first = events.updates.FirstOrDefault(f=>f!=null&&f[0]=="First");//получение первого массива содержащего слово "First"
    var text = events.updates.FirstOrDefault(f=>!(f!=null&&f.Any(a=>a=="Text")))//получение массива в котором есть "Text"
    if(text==null)
        throw new ArgumentException(...);
    var textIndex = text.TakeWhile(w=>!(w=="Text")).Count();//получение индекса в массиве для слова "Text"
     ...
    Ответ написан
    4 комментария
  • Как генерировать Json на C#, если структура динамическая, не прописывая все возможные варианты?

    yamaoto
    @yamaoto
    la programmeur
    Можно оформить классы вот так:
    public class CommandResult
    {
        public string Command {get;set;}
    }
    public class CommandResult<T>:CommandResult
    {
        public T Data {get;set;}
    }
    public class FilesList
    {
        public string[] Files {get;set;}
    }
    public class UserInfo
    {
        ...
    }


    и используешь в WebApi
    public class MyAwesomeController:ApiController
    {
    
        public CommandResult<FilesList> GetFilesList(){
            ...
            return new CommandResult<FilesList> (){
                Command = "FilesList",
                Data = new FilesList(){Files = new []{"file1","file2","file3","file4"}}
            };
        }
     public CommandResult<UserInfo> GetUserInfo(){
    ...
     }
    }


    или со своей логикой
    public class MyAwesomeCommands
    {
    
        private CommandResult<FilesList> _getFilesList(){
        ...
            return new CommandResult<FilesList> (){
                Command = "FilesList",
                Data = new FilesList(){Files = new []{"file1","file2","file3","file4"}}
            };
        }
        public string GetFilesList(){
            var data = getFilesList();
            return JsonConvert.SerializeObject(data);
        }
     public string GetUserInfo(){
    ...
     }
    }
    Ответ написан
    Комментировать