2016-05-25 9 views
0

Ich versuche, eine JSON-Zeichenfolge zu einer benutzerdefinierten Klasse zu deserialisieren. Mein json ist:Deserialize Json Datatype-Datei

externDossierNr:"foo10" 
internDossierNr:"2016010" 
rapport:File 
testarray:Array[3] 
testword:42 
__proto__:Object 

externDossierNr, internDossierNr und Beziehung sind Daten, die ich von meiner Form zu bekommen. Ich kann externDossierNr und internDossierNr deserialisieren. Wenn ich versuche, Rapport zu deserialisieren, gibt es {}. Ich habe dann testarray und testword in Javascript hinzugefügt und ich kann diese auch lesen.

Ich denke, das Problem liegt in der JsonType-Datei. Here Ich finde verschiedene Json Datentypen, aber Datei ist nicht einer von ihnen.

ich meine Datei Trog RestAngular

public save(item: any): any { 


    item["testword"] = 42; 
    item["testarray"] = [2,5,9]; 

    console.log("item to save is ", item); 
    console.log("rapport is ", item["rapport"]); 

    if (item.id === undefined) { 
     this.restService.save(this.metadata.apiDomain, item).then((addedItem: any) => { 
      toastr.success(`${addedItem.naam} successfully created.`, `Overzicht Dossiers Created`); 
     }); 
    } else { 
     this.restService.update(this.metadata.apiDomain, item).then((updatedItem: any) => { 
      toastr.success(`${updatedItem.naam} successfully updated.`, `Overzicht Dossiers Updated`); 
     }); 
    } 
} 

Für meine Deserialisierung Senden benutzte ich this und ([diese] [2] von sghill nicht genug rep) Artikel

den folgenden Code Paket Producing be.ugent.lca.data.entities.deserializers;

import be.ugent.lca.data.entities.Dossier; 
import com.fasterxml.jackson.core.JsonParser; 
import com.fasterxml.jackson.core.JsonToken; 
import com.fasterxml.jackson.core.ObjectCodec; 
import com.fasterxml.jackson.databind.DeserializationContext; 
import com.fasterxml.jackson.databind.JsonDeserializer; 
import com.fasterxml.jackson.databind.JsonNode; 
import java.io.IOException; 

public class DossierDeserializer extends JsonDeserializer { 
    @Override 
    public Dossier deserialize(JsonParser jsonParser, 
      DeserializationContext deserializationContext) throws IOException { 
     ObjectCodec oc = jsonParser.getCodec(); 
     JsonNode root = oc.readTree(jsonParser); 
     Dossier dossier = new Dossier(); 

     dossier.setExternDossierNr(root.get("externDossierNr").asText()); 
     dossier.setInternDossierNr(root.get("internDossierNr").asText()); 

     System.out.println("Intern Dossier nr is " + root.get("internDossierNr")); 
     System.out.println("Test word " + root.get("testword")); 
     System.out.println("Test array " + root.get("testarray")); 
     JsonNode node = root.get("rapport"); 
     if(node == null){ 
      System.out.println("Rapport is a null pointer."); 
     }else{ 
      System.out.println("Rapport is " + node + " with size " + node.size()); 
     } 
     return dossier; 
    } 
} 

Gibt es irgendwo kann ich weitere Informationen über die Datei Json Datentyp finden. Wie kann ich es senden, damit ich es lesen und deserialisieren kann?

Antwort

1

Meine Annahme, die falsch war, dass ich bereits den Json druckte. Ich habe gerade das JavaScript-Objekt veröffentlicht.

Da es nicht möglich ist, es zu senden, ist, obwohl ich multipart/formdata in meiner html Form habe, wenn es durch restangulares geschickt wird, wird es Anwendung/json.

Auf this restangular Problem habe ich gefunden, wie man es in Formdata verpackt.