On Fri, Feb 1, 2019 at 4:57 PM Ashwin Asp <[email protected]> wrote:
>
> Hello I am trying to parse the below array that contains array of objects.
>
> public class JsonParser {
>   public JsonParser() {
>
>     String jsonString = 
> "[[{\"distance\":2272,\"duration\":580},{\"distance\":7217,\"duration\":1393},{\"distance\":5773,\"duration\":1061},{\"distance\":6208,\"duration\":1170},{\"distance\":18846,\"duration\":2686}],[{\"distance\":2262,\"duration\":558},{\"distance\":7144,\"duration\":1366},{\"distance\":4803,\"duration\":801},{\"distance\":5238,\"duration\":910},{\"distance\":17876,\"duration\":2426}],[{\"distance\":7207,\"duration\":1393},{\"distance\":7505,\"duration\":1411},{\"distance\":12375,\"duration\":2010},{\"distance\":12809,\"duration\":2119},{\"distance\":24868,\"duration\":3462}],[{\"distance\":7481,\"duration\":1255},{\"distance\":4643,\"duration\":831},{\"distance\":11497,\"duration\":2060},{\"distance\":434,\"duration\":109},{\"distance\":13197,\"duration\":1657}],[{\"distance\":7723,\"duration\":1326},{\"distance\":4884,\"duration\":902},{\"distance\":11739,\"duration\":2130},{\"distance\":434,\"duration\":107},{\"distance\":12999,\"duration\":1628}],[{\"distance\":20372,\"duration\":2918},{\"distance\":17534,\"duration\":2493},{\"distance\":25912,\"duration\":3432},{\"distance\":13669,\"duration\":1774},{\"distance\":13414,\"duration\":1779}]]";
>     ObjectMapper oMapper = new ObjectMapper();
>     
> oMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, 
> true);
>     
> oMapper.configure(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, 
> true);
>     matrix = oMapper.convertValue(jsonString, DistanceMatrix.class);
>   }
> }
>
> public class DistanceMatrix {
>  public ArrayList<ArrayList<Map<String, Float>>> matrix = new 
> ArrayList<ArrayList<Map<String, Float>>>();
> }
>
> The json string can contains null elements as well
>
>
> String jsonString = 
> "[[null,{\"distance\":2272,\"duration\":580},{\"distance\":7217,\"duration\":1393},{\"distance\":5773,\"duration\":1061},{\"distance\":6208,\"duration\":1170},{\"distance\":18846,\"duration\":2686}],[{\"distance\":2262,\"duration\":558},null,{\"distance\":7144,\"duration\":1366},{\"distance\":4803,\"duration\":801},{\"distance\":5238,\"duration\":910},{\"distance\":17876,\"duration\":2426}],[{\"distance\":7207,\"duration\":1393},{\"distance\":7505,\"duration\":1411},null,{\"distance\":12375,\"duration\":2010},{\"distance\":12809,\"duration\":2119},{\"distance\":24868,\"duration\":3462}],[{\"distance\":7481,\"duration\":1255},{\"distance\":4643,\"duration\":831},{\"distance\":11497,\"duration\":2060},null,{\"distance\":434,\"duration\":109},{\"distance\":13197,\"duration\":1657}],[{\"distance\":7723,\"duration\":1326},{\"distance\":4884,\"duration\":902},{\"distance\":11739,\"duration\":2130},{\"distance\":434,\"duration\":107},null,{\"distance\":12999,\"duration\":1628}],[{\"distance\":20372,\"duration\":2918},{\"distance\":17534,\"duration\":2493},{\"distance\":25912,\"duration\":3432},{\"distance\":13669,\"duration\":1774},{\"distance\":13414,\"duration\":1779},null]]";
>
>
> This throws the error
>
>
>> Exception in thread "main" java.lang.IllegalArgumentException: Cannot 
>> construct instance of `com.beeline.DistanceMatrix` (although at least one 
>> Creator exists): no String-argument constructor/factory method to 
>> deserialize from String value 
>> ('[[{"distance":2272,"duration":580},{"distance":7217,"duration":1393},{"distance":5773,"duration":1061},{"distance":6208,"duration":1170},{"distance":18846,"duration":2686}],[{"distance":2262,"duration":558},{"distance":7144,"duration":1366},{"distance":4803,"duration":801},{"distance":5238,"duration":910},{"distance":17876,"duration":2426}],[{"distance":7207,"duration":1393},{"distance":7505,"duration":1411},{"distance":12375,"duration":2010},{"distance":12809,"duration":2119},{"distance":24868,"duration":3462}],[{"distance":7481,"duration":1255},{"distance":4643,"duration":831},{"distance":11497,"duration":2060},{"distance":434,"duration":109},{"distance":13197,"duration":1657}],[{"distance":7723,"duration":1326},{"distance":4884,"duration":902},{"distance":11739,"duration":2130},{"distance":434,"duration":107},{"distance":12999,"duration":1628}],[{"distance":20372,"duration":2918},{"distance":17534,"duration":2493},{"distance":25912,"duration":3432},{"distance":13669,"duration":1774},{"distance":13414,"duration":1779}]]')
>>  at [Source: UNKNOWN; line: -1, column: -1]
>> at 
>> com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3750)
>> at 
>> com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3668)
>> at com.beeline.JsonParser.<init>(JsonParser.java:17)
>> at com.beeline.VehicleOptimiser.main(VehicleOptimiser.java:22)
>
>
>
> Am I missing anything?
>

I am not sure why you are trying to use method "convertValue", but I
assume what you need is "readValue()" -- that will read String you
give as JSON, then bind it.
convertValue() would try to convert structurally from Java String into
given value type and that is unlikely to do what you want.

I hope this helps,

-+ Tatu +-

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to