Giter Club home page Giter Club logo

Comments (5)

jonasschmidt avatar jonasschmidt commented on August 16, 2024

The first argument has to be a Map, a filename won't work there. The reason is to keep the library free of dependencies like a JSON parser, and leave that choice to the user. If you're dealing with JSON payloads that you want to validate, you are bound to have a JSON parser around anyway.

Please have a look at the README for some usage examples.

from ex_json_schema.

ericbmerritt avatar ericbmerritt commented on August 16, 2024

@jonasschmidt You missed an important bit. I am not talking about json encoded strings at all. If I have a schema that expects a string (a string, not json) then things are fine. If I have a schema that expects a map and I pass it a string (because I am taking input from a user or some such) again not a json encoded string, then I get an exception rather than an error about not matching the schema.

from ex_json_schema.

jonasschmidt avatar jonasschmidt commented on August 16, 2024

Oh, ok. I misunderstood your question because in your code sample it looked like you were passing a string as the schema. Then it does indeed seem like there's a problem somewhere, I just can't see it yet. Your schema looks correct, and if I try validating a string against that schema, it gives me the correct result:

iex(2)> schema = %{"type" => "object", "$schema" => "http://json-schema.org/draft-04/schema", "id" => "<obsfuscated>", "properties" => %{"id" => %{"type" => "string", "pattern" => "^[0-9]{8}$"}, "name" => %{"type" => "string"} }, "required" => ["id"] }
%{"$schema" => "http://json-schema.org/draft-04/schema",
  "id" => "<obsfuscated>",
  "properties" => %{"id" => %{"pattern" => "^[0-9]{8}$", "type" => "string"},
    "name" => %{"type" => "string"}}, "required" => ["id"], "type" => "object"}
iex(3)> ExJsonSchema.Validator.validate(schema, "foo")
{:error, [{"Type mismatch. Expected Object but got String.", "#"}]}

from ex_json_schema.

jonasschmidt avatar jonasschmidt commented on August 16, 2024

Actually, I just remembered that this issue was fixed in v0.4.0 (original issue is here: #5). I was thinking in a wrong direction because of the misunderstanding with the schema. Just upgrade to v0.4.0 and your problem should go away :)

from ex_json_schema.

ericbmerritt avatar ericbmerritt commented on August 16, 2024

Ok. excellent. Thanks.

from ex_json_schema.

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.