AFNetworking publica matrices JSON como múltiples diccionarios de una sola entrada

Estoy teniendo un problema similar al discutidoaquí.

Estoy intentando publicar JSON en un servidor.

Aquí está el código de Objective-C quedebería trabajo, pero no lo hace. Obtengo una matriz vacía en el objeto de respuesta, sin saber por qué:

    AFHTTPRequestOperation * operation = [manager POST:uploadScriptUrl
      parameters:mutableJSON
      success:^(AFHTTPRequestOperation * operation, id responseObject) {
          successBlock(operation, responseObject);
      }
      failure:^(AFHTTPRequestOperation * operation, NSError * error) {
          failureBlock(operation, error);
      }];

Este código (que está adaptado del código que utilizo para cargar imágenes)MAS O MENOS trabajos. Sé que definitivamente no es la forma aprobada de hacerlo:

    AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
    AFJSONRequestSerializer * requestSerializer = [AFJSONRequestSerializer serializer];
    [requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    manager.requestSerializer = requestSerializer;

    AFHTTPRequestOperation * operation = [manager POST:uploadScriptUrl
    parameters:mutableJSON //passed in
    constructingBodyWithBlock:^(id <AFMultipartFormData> formData) {
        //Do nothing
   }
    success:^(AFHTTPRequestOperation * operation, id responseObject) {
        successBlock(operation, responseObject);
    }
    failure:^(AFHTTPRequestOperation * operation, NSError * error) {
        failureBlock(operation, error);
    }];

Publica mi JSON en el servidor, pero en el proceso de formulación de la solicitud, el JSON está dañado.

Así es como comienza:

{
"key1": [
    {
        "dictionary1": {
            "param1": "value1",
            "param2": "value2",
            "array1A": [
                "value1",
                "value2"
            ],
            "array1B": [
                "value1",
                "value2"
            ]
        }
    }
]

}

y esto es lo que AFNetworking envía al servidor:

{
"key1": [
    {
        "dictionary1": {
            "array1A": [
                "value1"
            ]
        }
    },
    {
        "dictionary1": {
            "array1A": [
                "value2"
            ]
        }
    },
    {
        "dictionary1": {
            "array1B": [
                "value1"
            ]
        }
    },
    {
        "dictionary1": {
            "array1B": [
                "value2"
            ]
        }
    },
    {
        "dictionary1": {
            "param1": "value1"
        }
    },
    {
        "dictionary1": {
            "param2": "value2"
        }
    }
]

}

Esto es lo que Charles muestra para la solicitud. Puede ver cómo la estructura JSON ya se ha modificado en la solicitud, antes de que el servidor haya tocado los datos.

Aquí está el PHP que estoy usando en el servidor. Muerto simple por ahora:

<?php

header('Content-type: application/json'); //Not sure if this is needed.

$json_string = json_encode($_POST);

header("HTTP/1.0 200 OK");
echo $json_string;

?>

Entonces, todo lo dicho, aquí están mis preguntas:

¿AFNetworking maneja matrices JSON anidadas? Enesta página Mattt dice: "La estructura que estás describiendo no puede representarse de manera determinista con la codificación de cadenas de consulta". Estoy usando POST, por lo que las cadenas de consulta no están involucradas. Pero tal vez la limitación existe con los datos POST también?

También tengo curiosidad por saber por qué la llamada AFNetworking más larga que incluyeconstructingBodyWithBlock tiene éxito mientras que el más corto falla. Sin embargo, esta respuesta es menos importante para mí. El método más largo casi funciona y me alegraría usarlo si devolviera el mismo JSON que envié.

¡Gracias a todos!

Respuestas a la pregunta(4)

Su respuesta a la pregunta