comp.lang.ada
 help / color / mirror / Atom feed
From: "Björn Lundin" <b.f.lundin@gmail.com>
Subject: Re: GNATCOLL JSON Parsing
Date: Fri, 8 Jun 2018 11:35:19 +0200
Date: 2018-06-08T11:35:19+02:00	[thread overview]
Message-ID: <pfdj78$6qp$1@dont-email.me> (raw)
In-Reply-To: <9524b3ee-476f-4af6-ab83-b15a6c2a417c@googlegroups.com>

On 2018-06-08 07:52, eduardsapotski@gmail.com wrote:
> I try understand parsing JSON in Ada. 
> 
> For example:
> Have web-api that gives simple JSON: http://api.exmo.com/v1/trades/?pair=BTC_USD&limit=10
> 
> I need to save this data to database.
> Created type:
> 
>    type Money is delta 0.00000001 range 0.0 .. 9_999_999_999.9;
>    type UTC_Date is range 1_500_000_000 .. 3_000_000_000;
> 
>    type Trade is record
> 
>       Trade_Id   : Integer;
>       Pair       : Unbounded_String;
>       Trade_Type : Unbounded_String;
>       Price      : Money;
>       Quantity   : Money;
>       Amount     : Money;
>       Date       : UTC_Date;
>       Saved      : Boolean;
> 
>    end record;
> 
> Created collection:
> 
>     package Vector_Trades is new Ada.Containers.Vectors(Natural, Trade);
> 
>     Trades : Vector_Trades.Vector;
> 
> Receive data:
> 
> JSON : Unbounded_String;
> 
> JSON := To_Unbounded_String(AWS.Response.Message_Body (AWS.Client.Get (URL => "http://api.exmo.com/v1/trades/?pair=BTC_USD&limit=10")));
> 
> What to do next? How to get list of objects from the JSON-text?


something like (not tested):
declare
   use gnatcoll.Json;
   current_item, Reply : JSON_Value := Create;
   BTC_Array : json_array := empty_array;
begin
  Reply := Read(Strm => Aws.Response.Message_Body(AWS_Reply),Filename =>
"");

  if reply.has_Field("BTC_USD") then
     btc_array := reply.Get("BTC_USD");
     if length(btc_array) > 0 then
        for i in 1 .. length(btc_array) loop
           Current_Item := Get(btc_array, i);
           declare
             tradeid : integer := 0;
           begin
             if Current_item.Has_Field("tradeid") then
               tradeid := current_item.Get(""tradeid);
             end if;
               ...
           end;
        end loop;
     end if;
  end if;
end;





> 
> How to save data to database already understood.
> 
> Thanks.
> 
> 
> 
> 
> 
> 


-- 
--
Björn

  reply	other threads:[~2018-06-08  9:35 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-08  5:52 GNATCOLL JSON Parsing eduardsapotski
2018-06-08  9:35 ` Björn Lundin [this message]
2018-06-08 10:40 ` eduardsapotski
2018-06-08 12:00 ` Per Sandberg
2018-06-08 15:19 ` eduardsapotski
2018-06-08 15:26   ` Björn Lundin
2018-12-03 15:02   ` Olivier Henley
2018-12-03 18:06     ` Dmitry A. Kazakov
2018-12-03 18:45       ` Olivier Henley
2018-12-03 20:54         ` Dmitry A. Kazakov
2018-12-03 22:01           ` Olivier Henley
2018-12-03 18:06     ` briot.emmanuel
2018-12-03 19:12       ` Olivier Henley
2018-12-03 19:43         ` briot.emmanuel
2018-12-03 20:48           ` Olivier Henley
2018-12-03 20:56             ` Olivier Henley
2018-12-04  7:25             ` briot.emmanuel
2018-12-04 13:39               ` Olivier Henley
2018-12-04 10:14             ` gautier_niouzes
2018-12-04 13:47               ` Olivier Henley
2018-06-08 15:58 ` eduardsapotski
2018-06-08 16:35 ` eduardsapotski
2018-06-08 17:09   ` Björn Lundin
2018-06-09  4:33   ` gautier_niouzes
2018-11-27  6:22   ` Per Sandberg
2018-06-09  4:37 ` gautier_niouzes
2018-06-09  5:08 ` eduardsapotski
2018-06-09  5:31 ` eduardsapotski
2018-06-12  9:55   ` R Srinivasan
2018-06-09  5:35 ` eduardsapotski
2018-11-26  6:42 ` eduardsapotski
2018-11-26 10:17   ` Björn Lundin
2018-11-26 15:56     ` Simon Wright
2018-11-26 16:11       ` eduardsapotski
2018-11-26 18:01         ` Simon Wright
2018-11-26 20:32           ` Björn Lundin
2018-12-03 18:10   ` Simon Wright
2018-11-26 10:26 ` eduardsapotski
2018-11-26 10:50 ` eduardsapotski
2018-11-26 16:16 ` eduardsapotski
2018-11-27  1:47 ` eduardsapotski
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox