Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #384583

Re: Which newsgroup for json parsing?

From Josef Möllers <josef@invalid.invalid>
Newsgroups comp.lang.c
Subject Re: Which newsgroup for json parsing?
Date 2024-05-13 11:07 +0200
Message-ID <lae3idF17r5U1@mid.individual.net> (permalink)
References <la1bjoF2anmU1@mid.individual.net>

Show all headers | View raw


On 08.05.24 15:04, Josef Möllers wrote:
> Hi all,
> 
> I am trying to parse a json string received through MQTT from a "Shelly 
> Plug S", e.g.
> {"id":0, "source":"button", "output":true, "apower":0.0, 
> "voltage":237.9, "current":0.000, 
> "aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1715172119},"temperature":{"tC":41.1, "tF":106.0}}
> 
> I am trying to use libjson-glib but I can't figure out what to use as 
> the first argument to json_gobject_from_data()!
> I am also looking at libjson-c but cannot find any examples that could 
> guide me.

F'up to self, also to answer a few questions.

First of all, I have switched to libjson-c5 The code I'm using looks 
like this:
/* Requires: libjson-c-dev */
# include       <json.h>
# include       <json_tokener.h>
:
static void
xlate(unsigned int plug, unsigned int sw, const char *payload, char *item)
{
     struct json_tokener *tok;
     struct json_object *obj1, *obj2;

     tok = json_tokener_new();
     obj1 = json_tokener_parse_ex(tok, payload, strlen(payload));
     if (json_object_object_get_ex(obj1, item, &obj2) && obj2 != NULL)
     {
         json_bool b;
         enum json_type t;
         switch (t = json_object_get_type(obj2))
         {
         case json_type_boolean:
             b =  json_object_get_boolean(obj2);
:

Anton referred to the many sites that have documentation.
Yes, you're absolutely right. There are many sites that have 
documentation, but I found that they were not easy to spot. It usually 
depends upon my state of mind AND the correct queries to send to Aunt 
Google. I am usually glad for some code examples that help me up the 
first step and where I can build upon. I have myself written a few 
magazine articles and a lot of internal documentation for my employers 
on various programming and architectural topics that aim at people who 
start working with new-ish hardware, eg microcontrollers to get at least 
a square wave output on a pin or some "Hello, World!" on a UART.

Malcolm wrote:
 > JSON parsing is the sort of thing you can easily do in C, but you
 > really don't want to do yourself, becuase it is a lot of fiddly code
 > to write, and everyone wants to solve exactly the same problem, which
 > is to query text formatted as JSON, usually for fields whose names and
 > types are known, but with facilities to list fields onthe fly.
Yes, that was exactly my idea when writing the program: why come up with 
something new when there is existing code to build upon.

To answer jak's question:
This is code solely for myself to translate a json string I receive from 
a Shelly Plug S into separate MQTT topics for the various items in the 
string, most important "output", but also "voltage" and "apower".
Most of my handlers rely on the fact that a topic carries only a single 
payload value, not a json object.

Thanks to all for helping!

Josef

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Which newsgroup for json parsing? Josef Möllers <josef@invalid.invalid> - 2024-05-08 15:04 +0200
  Re: Which newsgroup for json parsing? Anton Shepelev <anton.txt@g{oogle}mail.com> - 2024-05-08 16:21 +0300
    Re: Which newsgroup for json parsing? Lawrence D'Oliveiro <ldo@nz.invalid> - 2024-05-23 03:03 +0000
  Re: Which newsgroup for json parsing? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2024-05-08 15:33 +0100
    Re: Which newsgroup for json parsing? Anton Shepelev <anton.txt@g{oogle}mail.com> - 2024-05-08 19:53 +0300
  Re: Which newsgroup for json parsing? jak <nospam@please.ty> - 2024-05-09 15:18 +0200
  Re: Which newsgroup for json parsing? Josef Möllers <josef@invalid.invalid> - 2024-05-13 11:07 +0200
  Re: Which newsgroup for json parsing? Mikko <mikko.levanto@iki.fi> - 2024-05-16 19:27 +0300
    Re: Which newsgroup for json parsing? Josef Möllers <josef@invalid.invalid> - 2024-05-16 20:01 +0200
      Re: Which newsgroup for json parsing? scott@slp53.sl.home (Scott Lurndal) - 2024-05-16 18:53 +0000
        Re: Which newsgroup for json parsing? bart <bc@freeuk.com> - 2024-05-16 20:21 +0100
          Re: Which newsgroup for json parsing? scott@slp53.sl.home (Scott Lurndal) - 2024-05-16 20:54 +0000
          Re: Which newsgroup for json parsing? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2024-05-17 05:24 +0100
            Re: Which newsgroup for json parsing? bart <bc@freeuk.com> - 2024-05-17 15:13 +0100
              Re: XML (was Re: Which newsgroup for json parsing?) Lawrence D'Oliveiro <ldo@nz.invalid> - 2024-05-25 02:53 +0000
            Re: Which newsgroup for json parsing? jak <nospam@please.ty> - 2024-05-17 18:39 +0200
              Re: Which newsgroup for json parsing? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2024-05-17 18:07 +0100
      Re: Which newsgroup for json parsing? Mikko <mikko.levanto@iki.fi> - 2024-05-18 16:21 +0300
    Re: Which newsgroup for json parsing? Lawrence D'Oliveiro <ldo@nz.invalid> - 2024-05-23 03:40 +0000
      Re: Which newsgroup for json parsing? scott@slp53.sl.home (Scott Lurndal) - 2024-05-23 17:14 +0000
        Re: Which newsgroup for json parsing? Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2024-05-23 20:57 +0100

csiph-web