-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JSON1? #259
Comments
Hi ! We currently do not support sqlite extensions. However, it should be easy to compile your own sql.js with json1 support by editing the Makefile... |
Hi @lovasoa I have similar needs of json. My first step is to
Did I do some thing wrong? |
I am getting the same error when I try to build. Are there any documentation on what the build dependencies are? |
I need json1, json1 is a must have feature for sql.js. Why? Because when use sql.js in browser, get result, the standard format is json, instead of array of value and array of column. |
Please add json1 extension. It is a MUST have feature. |
I suggest you add an upvote (thumbs up) to the description. I think sufficient upvotes should help motivate the maintainers to reconsider the decision. The ugly workaround is to maintain a special branch, with |
This is my work around, _result_json = json1_extension(your_raw_records);
function json1_extension(_records){
var _json = [];
var _columns = _records[0].columns
var _values = _records[0].values
for (var i = 0; i < _values.length; i++) {
//console.log(_values[i]);
var _row_json = {};
var _row = _values[i];
for (var k = 0; k < _row.length; k++) {
_row_json[_columns[k]] = _row[k]
}
//console.log('_row_json...',_row_json);
_json.push(_row_json)
}
return _json
} |
with json1, my sql will be: var _sql = "SELECT json_group_array( json_object('id', id, 'name', name) ) AS json_result FROM (SELECT * FROM ipfs ORDER BY id); "; but, since it not support, json1, error out, |
Hello @hoogw, |
@intijk I got the error you reported above. If I install EMSDK per these directions, everything works. JSON1 is included with the SQLite "amalgations", so just adding var x = {"two":2,"three":3},
js = JSON.stringify(x),
src = "SELECT JSON_EXTRACT('" + js + "', '$.three')";
console.log("JSON_EXTRACT", db.exec(src)); |
I would avoid doing something like that. This is vulnerable to SQL injections. |
@lovasoa Running in the user's browser, so the user can self-inject as desired! |
In any case, this is a bug. The code above just doesn't work if the json contains the character |
It's a demo. |
Hi @brodybits, 👋 I was checking out your fork trying to see what steps are needed to create my own fork.
LLVM=/usr/local/homebrew/Cellar/emscripten/1.38.21/libexec/llvm/bin make Is there a list of steps for someone like me who doesn't know much about this project to add JSON1 support in a fork? I, too, wish that sql.js supported JSON1 out of the box. 🙂 Thanks! Kevin |
I recommend you check out some of my more recent branches. You should be able to see my recent work to support JSON1 along with some other features including some non-standard features here, should be able to build both asm.js and WASM now: https://github.com/brodybits/sql.js/commits/eu-ext-custom-build You may also be interested in my custom functions proposal in PR #320.
I had trouble using WASM in the older fork, should be OK now.
In terms of customer requirement: yes but not a super-hard requirement. In terms of build requirement: it should be at least theoretically possible to build JSON1 with older versions of SQLite but I cannot see much benefit here.
I think no. I generally build with all of these features included for the benefit of my users.
I think that was not needed to build my newer branches. I had the best luck installing emcc tool from their installer on GitHub, I think it was https://github.com/emscripten-core/emsdk but not 100% sure now.
I would recommend that you first install the emcc or emsdk tooling and try building from the master branch of this project. Then you should be able to edit the flags to enable JSON1 and build. You are also welcome to look Good luck! |
since sql.js targets javascript, i tend to agree json1 should be a builtin feature. |
@brodybits, In case you didn't see my reaction on your comment: THANK YOU very much! And especially for responding so quickly! ❤️ |
This is awesome! 😀 I had been trying out @dasha.ai/sql.js as a pre-built package that adds JSON1 support but now it's built into the original library! |
👋🏼 Hi! I'm late to the party here, but what data type should JSON be inserted as into a table? Is it a text data type? I can't find it in the docs so I'm just experimenting now trying various things 👀 UPDATE 1; On this blog post I've seen there's a json data type; https://www.beekeeperstudio.io/blog/sqlite-json - but I get an error;
perhaps this is the old way using the extension? UPDATE 2; I've made progress using the |
SELECT JSON_OBJECT(
'name', 'Alice',
'age', 25,
'email', '[email protected]'
);
-- '{"name":"Alice","age":25,"email":"[email protected]"}'
SELECT JSON_ARRAY(
'Alice',
25,
'[email protected]'
);
-- '["Alice",25,"[email protected]"]'
-- nested json example
SELECT JSON_ARRAY(
JSON_ARRAY(1, 2),
JSON_OBJECT('name', 'Alice')
)
-- '[[1,2],{"name":"Alice"}]'
|
A major client needs JSON1 support in SQL.js. Can we add it to SQL.js or would we have to maintain a fork?
The text was updated successfully, but these errors were encountered: