c# json json.net emoji

¿Cómo puedo deserializar emoji en json en C#



json.net (1)

Tengo un archivo json que incluye emoji cuando quiero deserializarlo, no podría deserializar emoji a cadena. mi código es:

var mystring ={"message":"jjasdajdasjdj laslla aasdasd ssdfdsf!!! 🙌/u{1F3FD}", "updated_time":"2015-04-14T22:37:13+0000", "id":"145193995506_148030368559"} FaceBookIdea ideaDetails = JsonConvert.DeserializeObject<FaceBookIdea>((mystring).ToString());

el error es:

{"Input string was not in a correct format."}

cuando elimino emoji, funciona bien.

Muchas gracias por tu ayuda


Su problema es que esta parte de su cadena de mensaje no se ajusta al estándar JSON :

"/u{1F3FD}"

De acuerdo con el estándar, /u four-hex-digits representa un literal de carácter unicode dado por el valor hexadecimal de su punto de código. Su cadena /u{1F3FD} con sus llaves no cumple con esta convención, por lo que Json.NET arroja una excepción al intentar analizarla. Verá un error similar si sube su JSON a https://jsonformatter.curiousconcept.com/ .

Por lo tanto, parece que para arreglar tu JSON para que se ajuste al estándar, necesitas formatear tu personaje como /uXXXX usando los 4 dígitos hexadecimales apropiados. Sin embargo, tu personaje, U+1F3FD , es más grande que 0xFFFF y no existe en el plano multilingüe básico Unicode. No se puede representar como un solo número hexadecimal de 4 dígitos. c # (y utf-16 en general ) representa dichos caracteres Unicode como pares de sustitución : pares de dos caracteres de dos bytes. Deberás hacer lo mismo aquí. La representación UTF-16 (hex) de tu personaje es

0xD83C 0xDFFD

Por lo tanto, tu personaje JSON debe ser:

/uD83C/uDFFD

Y para toda tu cadena:

{"message":"jjasdajdasjdj laslla aasdasd ssdfdsf!!! 🙌/uD83C/uDFFD", "updated_time":"2015-04-14T22:37:13+0000", "id":"145193995506_148030368559"}