Re: new json funcs
От | Alvaro Herrera |
---|---|
Тема | Re: new json funcs |
Дата | |
Msg-id | 20140128182240.GU10723@eldon.alvh.no-ip.org обсуждение исходный текст |
Ответ на | Re: new json funcs (Josh Berkus <josh@agliodbs.com>) |
Ответы |
Re: new json funcs
|
Список | pgsql-hackers |
Josh Berkus wrote: > On 01/27/2014 01:06 PM, Alvaro Herrera wrote: > > Andrew Dunstan escribió: > > > >> I'm not sure I understand the need. This is the difference between > >> the _text variants and their parents. Why would you call > >> json_object_field when you want the dequoted text? > > > > Because I first need to know its type. Sometimes it's an array, or an > > object, or a boolean, and for those I won't call the _text version > > afterwards but just use the original. > > It would make more sense to extract them as JSON, check the type, and > convert. That's what I'm already doing. My question is how do I convert it? I have this, but would like to get rid of it: /** dequote_jsonval* Take a string value extracted from a JSON object, and return a copy of it* with the quotingremoved.** Another alternative to this would be to run the extraction routine again,* using the "_text" variant whichreturns the value without quotes; but this* complicates the logic a lot because not all values are extracted in* thesame way (some are extracted using json_object_field, others* using json_array_element). Dequoting the object alreadyat hand is a* lot easier.*/ static char * dequote_jsonval(char *jsonval) {char *result;int inputlen = strlen(jsonval);int i;int j = 0; result = palloc(strlen(jsonval) + 1); /* skip the start and end quotes right away */for (i = 1; i < inputlen - 1; i++){ /* * XXX this skips the \ in a \"sequence but leaves other escaped * sequences in place. Are there other cases we need to handle * specially? */ if (jsonval[i] == '\\' && jsonval[i + 1] == '"') { i++; continue; } result[j++] = jsonval[i];}result[j] = '\0'; return result; } -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
В списке pgsql-hackers по дате отправления: