JSOn object no deserializando correctamente en el lado del service web

Estoy trabajando en el proyecto de iOS y enviando la cadena Json para backend a través de wcf webservice. Funciona con éxito para muchos usuarios, pero para algunos usuarios con backend que obtienen una cadena json incompleta.

Código para generar cadenas Json

NSData *data = [NSJSONSerialization dataWithJSONObject:EmployeeDetails options:0 error:nil]; NSString *JsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

Y adjuntando la cadena json con la request por debajo del código

 [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; [request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]]; 

EmployeeDetails es NSMutableDictionary con los detalles del empleado.

Y

Aquí hay una cadena de Json exitosa deserializada de BackEnd

 {"FirstName":"Donald","LastCBPaymentType":6,"AcceptEmail":true,"CellPhone":"321-300-6874","Position":"3","CarrierNum":"4","EmpNum":"96874"} 

Y cadena Json incompleta

 {"FirstName":"roset","LastCBPaymentType":6,"AcceptEmail":true,"CellPhone":"321-300-6874","Position":"3","CarrierNum":"4","EmpNum":"98799 

La secuencia de json incompleta que ocurre en el backend para algún usuario.

¿Alguien puede ayudar a resolver este problema?

Bueno, yo diría que TomSwift está en el path correcto … Es evidente que el JSON roto simplemente falta "} desde el final de la cadena. Eso de hecho parece ser algo saneado por una expresión regular … Realmente debería encuentre la fuente del problema; pero para una solución rápida y sucia mientras lo descubre, puede ejecutar su propia expresión regular en el JSON que recibe y si no termina con un "}, simplemente agréguelo … Primero haz algo como: '/ "[0-9] + $ /' (para comprobar si hay una cadena numérica abierta al final, si la hay, la cierras añadiendo") y luego comtesting si '/} $ / '(if} es el último carácter, si no lo es: agréguelo).

Recuerde, lo anterior solo sería una solución temporal (ya que es algo pesado y no muy bonito), pero me podría imaginar a mí mismo obligado a hacer algo como esto, simplemente por limitaciones de time. Si el problema proviene realmente de la API, podría decirle a los creadores sobre esto y usar algo como esa solución arriba mientras lo reparaban.

PD. Si alguien elige utilizar una solución como la anterior, por favor, por favor, por amor a todo lo que guardas santo, deja un comentario en el código explicando por qué lo hiciste (en lugar de decirnos lo que hiciste …) .

Tuve un problema similar en PHP / CodeIgniter recientemente y el problema era que el JSON estaba siendo "desinfectado" a través de algunas expresiones regulares excesivamente ambiciosas antes de que llegara a mi manejador. ¿Tal vez haya alguna desinfección similar que ocurre en WCF?

Cosas que intentaría:

  1. Utilizando Charles Proxy para confirmar que la request (¿POST?) Está realmente enviando el cuerpo completo como esperaba.

  2. Pruebe la aplicación Content-Type / json en su lugar.