Estou convertendo minha implementação da newtonsoft para a nova biblioteca JSON no .net core 3.0. eu tenho o seguinte código
public static bool IsValidJson(string json)
{
try
{
JObject.Parse(json);
return true;
}
catch (Exception ex)
{
Logger.ErrorFormat("Invalid Json Received {0}", json);
Logger.Fatal(ex.Message);
return false;
}
}
Não consigo encontrar nenhum equivalente para JObject.Parse(json);
Também qual será o atributo JsonProperty
equivalente
public class ResponseJson
{
[JsonProperty(PropertyName = "status")]
public bool Status { get; set; }
[JsonProperty(PropertyName = "message")]
public string Message { get; set; }
[JsonProperty(PropertyName = "Log_id")]
public string LogId { get; set; }
[JsonProperty(PropertyName = "Log_status")]
public string LogStatus { get; set; }
public string FailureReason { get; set; }
}
Mais uma coisa que eu vou procurar o equivalente a Formating.None
.
c#
serialization
json.net
.net-core-3.0
system.text.json
Kamran Shahid
fonte
fonte
Respostas:
Você está fazendo algumas perguntas aqui:
Não consigo encontrar nenhum equivalente para
JObject.Parse(json);
Você pode usar
JsonDocument
para analisar e examinar qualquer JSON, começando pelo seuRootElement
. O elemento raiz é do tipoJsonElement
que representa qualquer valor JSON (primitivo ou não) e corresponde ao de NewtonsoftJToken
.Mas tome nota desta observação da documentação :
Quando você precisar usar um documento
JsonElement
externo à vida útil do documento, você deve cloná- lo:Observe também que
JsonDocument
atualmente é somente leitura e não fornece uma API para criar ou modificar JSON. Existe um problema em aberto Edição nº 39922: DOM gravável do Json rastreando isso.Um exemplo de uso é o seguinte:
Além disso, qual será o atributo
JsonProperty
equivalente?Os atributos que podem controlar
JsonSerializer
são colocados noSystem.Text.Json.Serialization
espaço para nome e herdam de uma classe base abstrataJsonAttribute
. DiferentementeJsonProperty
, não há atributo omnibus que possa controlar todos os aspectos da serialização de propriedades. Em vez disso, existem atributos específicos para controlar aspectos específicos.A partir do .NET Core 3, eles incluem:
[JsonPropertyNameAttribute(string)]
:Este é o atributo que você deseja usar para controlar os nomes serializados da sua
ResponseJson
classe:[JsonConverterAttribute(Type)]
:Observe que a prioridade documentada dos conversores - Atributo na propriedade, a coleção Converters nas opções e o Atributo no tipo - difere da ordem documentada dos conversores Newtonsoft , que é o JsonConverter definido pelo atributo em um membro e o JsonConverter definido por um atributo em uma classe e, finalmente, todos os conversores passados para o JsonSerializer.
[JsonExtensionDataAttribute]
- corresponde ao de Newtonsoft[JsonExtensionData]
.[JsonIgnoreAttribute]
- corresponde ao de Newtonsoft[JsonIgnore]
.Ao escrever JSON via
Utf8JsonWriter
, o recuo pode ser controlado pela configuraçãoJsonWriterOptions.Indented
detrue
oufalse
.Ao serializar para JSON via
JsonSerializer.Serialize
, o recuo pode ser controlado pela configuraçãoJsonSerializerOptions.WriteIndented
detrue
oufalse
.Violino de demonstração aqui mostrando serialização
JsonSerializer
e análise comJsonDocument
.fonte
Este link deve ajudá-lo, trechos dos quais copiei abaixo.
https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-apis/
fonte
Você pode mesma versão que seu outro pacote de instalação
então
fonte