в int option конвертнуть? Пользуюсь FSharp.SystemTextJson
                  
                  
                  
                  
                  
                  Вот такой пример
                  
                  
                  
                  
                  
                  type RecordWithNulls = {
                  
                  
                      [<JsonName "count">] Count: int option
                  
                  
                  }
                  
                  
                  
                  
                  
                  let [<Literal>] json5 = """{"count": null}"""
                  
                  
                  let result = JsonSerializer.Deserialize<RecordWithNulls>(json5, options)
                  
                  
                  
                  
                  
                  Возращает ошибку: System.Text.Json.JsonException: The JSON value could not be converted to System.Int32. Path: $ | LineNumber: 0 | BytePositionInLine: 4.
                  
                  
                  
                  
                  
                  Опции сейчас такие
                  
                  
                  
                  
                  
                  let options =
                  
                  
                      JsonFSharpOptions.Default()
                  
                  
                          .WithAllowNullFields()
                  
                  
                          .WithSkippableOptionFields()
                  
                  
                          .ToJsonSerializerOptions()
                  
                  
                  
                  
                  
                  В целом опция  .WithAllowNullFields() решают мою проблему можно убрать option и при null будет 0 как дефолт, но хочется уже добить именно с option.
                  
                  
                
https://github.com/Tarmil/FSharp.SystemTextJson/blob/1b6dbd9f6fd5cfe46d8ec9c52bf1a99f8ef0395a/tests/FSharp.SystemTextJson.Tests/Test.Regression.fs#L74 https://github.com/Tarmil/FSharp.SystemTextJson/blob/master/README.md#faq
FYI если есть возможность пользоваться нутонсофтом, то там есть доп пакет Microsoft.FSharpLu.Json, где все это работает из коробки. И юнионы нормально обрабатывает тоже
Там null или поле отсутствует?
 Boris
                          Glebov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Boris
                          Glebov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  null с отсутсвующими полями ок тоже все
 Boris
                          Glebov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Boris
                          Glebov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Спасибо, попробую
 Boris
                          Glebov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Boris
                          Glebov
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Как я понял предложение попробовать UnwrapOptions но он для сериализации - я его тоже ставил, у меня с десериализацией проблема
Эта либа не допилена до конца. Она не поддерживает изменения и обработку сеттингов из .net 8.0. Возможно 7.0 тоже. Как раз касается обработки null'ов. Добавить это всё несложно, но автор её вроде пропал и не реагирует особо. Поэтому будет кто PR мержить или нет — неизвестно.
Это я к тому, что она полностью переопределяет конвертер, и анализирует нативный конфиг от System.Text.Json. Т.к. под последние версии её не обновляли, то часть настроек, когда ты их добавляешь, не даёт никакого эффекта, просто потому что они никак не обрабатывается конвертером рекордов из этой либы. Также либа задизайнена так, что подписать то нужно со стороны — т.е. не меняя её саму — довольно трудно. Можно было бы хотя бы наследоваться от конвертера, но там нужные функции, которые, в частности, решают как поступать с null-ами, сделаны приватными, и следовательно ты там никак не подлезешь. Недавно разбирал и дибагал эту либу.
Обсуждают сегодня