Comments (5)
Found the problem. It errors out, which is the expected behavior, when you don't pipe. ExJsonSchema.Validator.validate(schema, foo)
will produce the error messages, but foo |> ExJsonSchema.Validator.validate(schema)
does not. This is probably because I misunderstand how Elixir handles partial function application.
bug_report.exs
defmodule Bug_Report do
def main do
schema = %{
"type" => "object",
"properties" => %{
"foo" => %{
"type" => "number"
},
"bar" => %{
"type" => ["number", "null"]
},
"baz" => %{
"type" => "string"
},
},
"additionalProperties" => false
} |> ExJsonSchema.Schema.resolve
foo = %{
"foo" => "Hello",
"bar" => false,
"baz" => 123
}
case ExJsonSchema.Validator.validate(schema, foo) do
:ok -> foo |> inspect |> IO.puts
# Even giving the validator an object with no fields that exist in the schema results in :ok.
{:error, messages} -> messages |> inspect |> IO.puts
end
end
end
Bug_Report.main
from ex_json_schema.
By default, JSON Schema ignores properties that are not specified. You can change that behaviour by adding "additionalProperties" => false
to your schema, then your example would fail. A more in-depth explanation of how objects and properties work can be found here: https://spacetelescope.github.io/understanding-json-schema/reference/object.html#properties
from ex_json_schema.
Yeah, the |>
operator is very specific, it passes the value on the left side as the first parameter to the function on the right side. In this case, it doesn't work unfortunately (actually I realized much later that the payload should be the first parameter to validate
and the schema the second, but I didn't want to introduce that breaking change just to make things a bit more convenient).
from ex_json_schema.
Ah thanks. I'm coming from Elm, where we pipe to the last parameter.
from ex_json_schema.
from ex_json_schema.
Related Issues (20)
- Map.take deprecation HOT 2
- Add contributors with merge rights HOT 1
- Warning messages when running with Elixir 1.9.1 & OTP 22 HOT 2
- Intent to implement: custom string validation HOT 1
- Changelog HOT 2
- IO.inspect in hex package HOT 2
- Examples on usage HOT 3
- Error on extra attributes? HOT 1
- Elixir 1.11 deprecations HOT 1
- Feature request: make enum, properties, propertyNames and additionalProperties (or the actual schema) available for custom errors HOT 4
- Support custom formats for non-string types HOT 5
- I cant see why I'm getting this error
- Any plans to support 2019 and 2020 ? HOT 6
- Issue with oneOf when used in conjunction with pattern HOT 7
- No support for dependentRequired HOT 2
- Make schema domain configurable HOT 1
- Error line number HOT 1
- Handling refs in a schema HOT 3
- Extending Vocabularies HOT 1
- How to validate a schema itself? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ex_json_schema.