10

How can I read value from json file in that field name contains space using OPENJSON in Sql Server 2016. See the below code:

DECLARE @json NVARCHAR(MAX)
SET @json = N'{ "full name" : "Jayesh Tank"}';
SELECT * FROM OPENJSON(@json) WITH ( [name] [varchar](60) '$.full name')

Also another sample code in that space is after field name.

SET @json = N'{ "name   " : "abc"}';
SELECT * FROM OPENJSON(@json) WITH ( [name] [varchar](60)    '$.name')

'$.name' will return null.Is there way to read this value?

4 Answers 4

16

Generally it is a bad idea to use spaces in the attribute name.

I would leave out the [ ] from your OPENJSON name and varchar(60) - source MSDN OPENJSON.

Now to actually answer your question:

You need to format your attribute with double quotes in the WITH clause:

@DECLARE @json NVARCHAR(MAX);
SET @json=N'{ "full name" : "Jayesh Tank"}';
SELECT * FROM OPENJSON(@json) WITH (name varchar(60) '$."full name"')

for the second one:

SET @json = N'{ "name   " : "abc"}';
SELECT * FROM OPENJSON(@json) WITH ( name varchar(60)'$."name   "')
Sign up to request clarification or add additional context in comments.

Comments

0
JSON_VALUE(c.value,'$.Serial Number') as [Serial Number] is throwing an error with a space. How do I resolve the space in the field name using JSON_VALUE .

by itself '$.Full Name' is not a valid json, but adding '$."Full Name"' the json becomes valid 

Comments

0

I know this says using OPENJSON, but Googling JSON_VALUE led me here. To get the value using JSON_VALUE for a key that has a space, don't do this:

 JSON_VALUE([Data], '$.Your Name') AS [Name]

Put the value in double quotes, like this:

 JSON_VALUE([Data], '$."Your Name"') AS [Name]

and it will work.

1 Comment

I am getting: Msg 13609, Level 16, State 2, Line 3 JSON text is not properly formatted. Unexpected character 'T' is found at position 0.
0

If you have a space in the JSON tag, use double quotes inside the single quotes and the JSON tag is case sensitive

 SELECT *  FROM OPENJSON(@json)  WITH (   
        InjectionPoint nvarchar(max) '$."injection Point"',
        tanksize nvarchar(max) '$."tank Size"',
        TargetUsage nvarchar(max) '$."target Usage"',
        TargetAllowance nvarchar(max) '$."target Allowance"',
        PriceGal nvarchar(max) '$."price/Gal"',
        TankLocationId nvarchar(max) '$."tank Location ID"',
        SrAcctMgr nvarchar(max) '$."sr ACCT MGR"',
        District nvarchar(max) '$.district',
        County nvarchar(max) '$.county',
        LiftMechanism nvarchar(max) '$."lift Mechanism"',
        opRegion nvarchar(max) '$.opRegion',
        area nvarchar(max) '$.area',
        u_id nvarchar(max) '$.u_ID'
 
) as JSON

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.