Giter VIP home page Giter VIP logo

Comments (4)

zapov avatar zapov commented on August 22, 2024

As a temporary workaround you can register your own generic collection handler:

class CollectionWriter implements JsonWriter.WriteObject<Collection> {
  private final DslJson dslJson;

  public CollectionWriter(DslJson dslJson) {
    this.dslJson = dslJson;
  }

  @Override
  public void write(JsonWriter writer, Collection value) {
    writer.writeByte((byte)'[');
    boolean isFirst = true;
    for(Object it : value) {
      if (isFirst) isFirst = false;
      else writer.writeByte((byte)',');
      if (it == null) writer.writeNull();
      else dslJson.serialize(writer, it.getClass(), it);
    }
    writer.writeByte((byte)']');
  }
}

@Test
public void testSerialization() throws IOException {
  DslJson dsl = new DslJson<Object>();
  dsl.registerWriter(Collection.class, new CollectionWriter(dsl));
  JsonWriter jw = dsl.newWriter();
  dsl.serializeMap(
      Collections.singletonMap("x",
          Collections.singletonList(Collections.singletonList("Hello"))
      ),
      jw
  );
  Assert.assertEquals("{\"x\":[[\"Hello\"]]}", jw.toString());
}

from dsl-json.

dcrn avatar dcrn commented on August 22, 2024

Ah great, I didn't think of that. Thanks!

from dsl-json.

zapov avatar zapov commented on August 22, 2024

So I looked at this some more... and due to way that dsl-json was designed with upfront schema in mind this doesnt work out of the box.
I do plan on removing the fallback functionality from the library... and then this should work as expected.
This can be left as reminder to remove the fallback.

from dsl-json.

zapov avatar zapov commented on August 22, 2024

Such collections will now work in v1.6.1 when runtime analysis is enabled:

Settings.withRuntime() //Runtime configuration needs to be explicitly enabled

from dsl-json.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.