GithubHelp home page GithubHelp logo

Comments (10)

kritzcreek avatar kritzcreek commented on June 19, 2024 1

Nothing and [] are kind of the same thing

😱

nononooooonoo. Especially in decoding you don't want your parser to make these implicit assumptions. One common situation I can think of is an API call querying a collection.

Now (1) null might mean the collection didn't exist, whereas (2) an empty Array means it's empty. That's a very different thing though. 1) means a programmer error, and 2) means the user should populate it with some data.

Don't surprise me with dynamic coercing behaviour. I can always throw in a fromMaybe [] if I feel like it.

from purescript-simple-json.

justinwoo avatar justinwoo commented on June 19, 2024 1

Gist example for those reading this thread later: https://gist.github.com/justinwoo/9d0bb67a84c227f327da7171bb7105c2

from purescript-simple-json.

jacereda avatar jacereda commented on June 19, 2024

Why not simply use Array a and live with the serialised key=[]?

from purescript-simple-json.

justinwoo avatar justinwoo commented on June 19, 2024

I think in this case, having readJSON read from an input and then applying a series of modify functions should work right? Since the key :: Maybe a -> key :: a transformations will provide the types there and your end result being some concrete type of a record should work?

e.g.

import Data.Nullable (toMaybe)

type MyThing =
  { a :: String
  , b :: Array String
  }

json = """
  { "a": "sedf", "b": null }
"""

parse :: String -> E MyThing
parse str = modify (SProxy :: SProxy "b") (fromMaybe [] <<< toMaybe) <$> readJSON str

or something like that?

from purescript-simple-json.

justinwoo avatar justinwoo commented on June 19, 2024

Nothing and [] are kind of the same thing

Probably works if you only use NonEmpty Array everywhere, but not entirely sure if that's what you want in your codebase either

from purescript-simple-json.

megamaddu avatar megamaddu commented on June 19, 2024

@jacereda Sorry, only referring to deserialization.

You're probably right.. unfortunately C# is really loose with nullability so I have a bunch of apis to work with which like to leave off arrays when they're empty, so I'll probably need to write custom ReadForeign implementations for those records.

from purescript-simple-json.

megamaddu avatar megamaddu commented on June 19, 2024

Is the toMaybe necessary? Or does the Maybe instance distinguish between missing and null?

from purescript-simple-json.

justinwoo avatar justinwoo commented on June 19, 2024

the Maybe instance is just a hack and shouldn't be relied on at all. As noted in https://github.com/justinwoo/purescript-simple-json#warning-maybe

from purescript-simple-json.

megamaddu avatar megamaddu commented on June 19, 2024

Seems clear enough.. are you suggesting it shouldn't be used or might be removed?

from purescript-simple-json.

justinwoo avatar justinwoo commented on June 19, 2024

Yeah, mostly just shouldn't be used unless you're willing to lock down versions of simple-json (which is the easy part if you use psc-package I guess) and read all the release notes to make sure the behavior wasn't changed again

from purescript-simple-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.