2017-12-21 4 views
1

Ich habe Probleme mit CloseArray in Pact-JVM-Consumer.Pact JVM closeArray

Gegeben Json wie, wie würde die "DslPart imeiResults = neue PactDslJsonBody()" - Anweisung erstellt werden.

{ 
    "Car": { 
    "Price": 123,  
    "Features": [ 
     "rain sensor", 
     "cruise control" 
    ], 
    "Id": "6500" 
    } 
} 

ich so versucht:

DslPart etaResults = new PactDslJsonBody() 
      .object("Car") 
       .integerType("Price",123) 
       .array("Features") 
        .stringValue("rain sensor") 
        .stringValue("cruise control") 
       .closeArray() 
       .stringValue("Id","6500") 
      .closeObject() 
      .asBody(); 

Aber das funktioniert nicht, zum Beispiel .closeArray() nicht zurück PactDslJsonBody aber DslPart, so dass Sie nie etwas nach .closeArray() haben kann? Ich verstehe es nicht, kann jemand den Code zeigen, wie man das richtig macht?

Antwort

0

Ich nehme an, dass Ihre stringValue nach der closeArray nicht funktioniert?

Leider, wenn Sie ein Array mit der array-Funktion erstellen, es tatsächlich creates a new PactDslJsonArray and when closing it, there's no way for that class to know what the parent is, hence it just returns the common superclass of DslPart, die einige Verwirrung verursachen kann. Was getan werden muss, ist das DslPart zurück zu PactDslJsonBody mit der asBody Funktion. So sollte Ihr Beispiel so etwas wie:

DslPart etaResults = new PactDslJsonBody() 
    .object("Car") 
     .integerType("Price",123) 
     .array("Features") 
      .stringValue("rain sensor") 
      .stringValue("cruise control") 
     .closeArray() 
     .asBody() 
     .stringValue("Id","6500") 
    .closeObject(); 

Jetzt wissen wir, dass dies verwirrend ist, hence why we started working on a new DSL using Java 8's Lambda functions zu versuchen, die Erfahrung besser zu machen. Ich hoffe, das hilft.

+0

OK, ich könnte dieses Beispiel zur Arbeit bekommen. Aber jetzt bin ich wieder festgefahren. Ca Sie unterstützen einen DslPart von diesem Json bei der Schaffung von: { "Inventar": [ { "Auto": { "Getriebe": "Automatik", "ProductId": 30212 }, "Kamera" : { "Preis erzielter Preis": 1235, "Bedingungen": [ "FaultyButtons", "FaultyCasing" ], "ModelID": "650" } } ], "IsSuccess": true, "Info": "Ok" } –

+0

Was ist das Problem, das Sie haben? Ich bin nicht scharf darauf, die Arbeit für dich zu erledigen. Bitte versuchen Sie und kommen Sie mit einer konkreten Frage zurück. Vielleicht ist es besser, eine neue Frage überhaupt zu beginnen. –

Verwandte Themen