Yes Chang...
Below is the whole script starting from creating Json with inner Array and Parsing back to normal table.
-----------------------------------------------------------------------
// Create Table
CREATE TABLE "User" (
"id" NUMERIC(10,0) NOT NULL,
"lastname" VARCHAR(50) NULL,
"firstname" VARCHAR(50) NULL,
"address" VARCHAR(100) NULL,
"zip" VARCHAR(9) NULL, PRIMARY KEY ( "id" ASC )
) IN "system";
// Insert Data
Insert into "User" values (1,'John','Jony','Street 10, Andrew
Corner','12345');
Insert into "User" values (2,'Jason','Jack','Street 50, Moon
Corner','56456');
Insert into "User" values (3,'John','Jony','Street 20, Mars
Corner','56878');
Insert into "User" values (4,'Jill','Jill','Street 90, Rors
Corner','12345');
// Parse data to Json format
select DISTINCT "User"."firstname", "User"."lastname",
"address"."address" as street_1, "address"."zip" from dba."User" as
"User",
(select DISTINCT "User"."address", "User".firstname, "User"."zip" from
dba."User" as "User", dba."User" as User2 where "User".firstname =
User2.firstname and
"User".id != User2.id GROUP BY "User"."address", "User"."firstname",
"User"."lastname", "User"."zip") AS "address"
WHERE "User"."firstname" = "address"."firstname" ORDER BY 1 FOR JSON
AUTO;
// Alternate way by using Json Explicit
http://dcx.sybase.com/sa160/fr/dbusage/for-json-explicit.html
// Parse data back to normal table
BEGIN
-- Create variable and table
CREATE OR REPLACE VARIABLE json_data LONG VARCHAR;
CREATE TABLE IF NOT EXISTS tdata (FirstName long varchar, LastName
long varchar, street_1 long varchar, zip long varchar);
DELETE FROM tdata;
-- Sample data
SET json_data =
'[{"User":{"firstname":"Jony","lastname":"John","address":[{"street_1":"Street 10, Andrew Corner","zip":"12345"},{"street_1":"Street 20,
MarsCorner","zip":"56878"}]}}] ';
-- Parse JSON
CALL sp_parse_json('sarray',json_data);
-- Insert into table
INSERT INTO tdata (FirstName, LastName, street_1, zip)
SELECT
sarray[[1]]."User".firstname,
sarray[[1]]."User".lastname,
sarray[[1]]."User".address[[row_num]].street_1,
sarray[[1]]."User".address[[row_num]].zip
FROM sa_rowgenerator(1,CARDINALITY(sarray[[1]]."User".address));
SELECT * FROM tdata;
END;