我想让PostgreSQL将查询结果作为一个JSON数组返回.特定
create table t (a int primary key, b text);
insert into t values (1, 'value1');
insert into t values (2, 'value2');
insert into t values (3, 'value3');
Run Code Online (Sandbox Code Playgroud)
我想要类似的东西
[{"a":1,"b":"value1"},{"a":2,"b":"value2"},{"a":3,"b":"value3"}]
Run Code Online (Sandbox Code Playgroud)
要么
{"a":[1,2,3], "b":["value1","value2","value3"]}
Run Code Online (Sandbox Code Playgroud)
(实际上,了解两者会更有用).我尝试了一些类似的东西
select row_to_json(row) from (select * from t) row;
select array_agg(row) from (select * from t) row;
select array_to_string(array_agg(row), '') from (select * from t) row;
Run Code Online (Sandbox Code Playgroud)
我觉得我很亲密,但不是真的.除了9.15之外,我应该查看其他文档.JSON函数和操作符?
顺便说一句,我不确定我的想法.这是一个通常的设计决定吗?我的想法是,当然,我可以获取上述3个查询中的第一个的结果(例如)并在将其提供给客户端之前在应用程序中稍微操作它,但是如果PostgreSQL可以直接创建最终的JSON对象,它会更简单,因为我还没有在我的应用程序中包含对任何JSON库的依赖.
我在这段代码中使用std :: unique_ptr,它按照我的预期编译和运行.
std::stringstream out;
out << std::setw(3) << std::setfill('0') << i;
std::unique_ptr<std::string> s(new std::string(out.str()));
s->insert(s->end()-2, 1, '.');
return std::move(s);
Run Code Online (Sandbox Code Playgroud)
但是,我从Eclipse CDT收到错误消息.在第四行:无法解析方法"插入",无法解析方法"结束".
以前,我在名称std :: unique_ptr的外观上也遇到了错误.这是通过设置预处理器符号__GXX_EXPERIMENTAL_CXX0X__和重建索引来解决的,如本问题的答案中所述.
有没有办法让CDT理解s的类型是std :: string*并且它应该在std :: string中查找s-> insert()和s-> end()?
PS:我使用的是Eclipse 3.7.1和CDT 8.0.0.201106081058
PS2:我想在上面的问题中将其作为评论发布,但我不能,大概是因为我是新用户
我写关于国际象棋的文章。我经常需要使用名为 FEN 的标准格式来描述国际象棋位置,并希望它自动转换为 png 图像,并且当我将 org 文档导出为 LaTeX 或 html 时,图像将被内联。我认为这是可以做到的,因为 ditaa 的工作原理似乎类似。
例如,使用 FEN 字符串“8/pppr1kpp/8/8/8/5P2/PPP1RKPP/8 w - - 0 1”作为输入,我创建一个名为 chessboard.tex 的 tex 文件:
\documentclass[border={0 0 3 0}, convert={density=150}]{standalone}
\usepackage{xskak}
\usepackage{chessboard}
\usepackage{chessfss}
\usepackage{fontspec}
\begin{document}
\setchessboard{normalboard, showmover=true, moverstyle=triangle, label=false}
\setboardfontfamily{merida}
\fenboard{8/pppr1kpp/8/8/8/5P2/PPP1RKPP/8 w - - 0 1} \chessboard
\end{document}
Run Code Online (Sandbox Code Playgroud)
使用 shell 命令 $> xelatex --shell-escape chessboard.tex 会生成以下 png 图像(由于使用了独立包)。

我怎样才能自动化这个过程,这样我就可以放入一个像这样的组织文件
#+BEGIN_SRC chessfen
8/pppr1kpp/8/8/8/5P2/PPP1RKPP/8 w - - 0 1
#+END_SRC
Run Code Online (Sandbox Code Playgroud)
上述过程是否自动化?
我的想法是实现一个活性探针作为命令,并使用类似的东西
$ grep something ERROR
Run Code Online (Sandbox Code Playgroud)
来自 Pod 内部,因此如果在 Pod 的输出中存在包含 ERROR 的行,则活性探测失败。
这可能吗?如果没有,是否可以在同一个容器中添加另一个容器来监视第一个容器?
(defstruct (mydate (:constructor make-mydate (year month day)))
(year 1970)
(month 1)
(day 1))
(defvar *date1* (make-mydate 1992 1 1))
Run Code Online (Sandbox Code Playgroud)
问题更普遍,但说我想将像date1这样的对象转换为“文档”,我可以坚持到数据库(例如 mongoDB,使用包 cl-mongo)。所以我写
(defun mydate->document (mydate)
(cl-mongo:$ (cl-mongo:$ "year" (mydate-year mydate))
(cl-mongo:$ "month" (mydate-month mydate))
(cl-mongo:$ "day" (mydate-day mydate))))
REPL--> (mydate->doc *date1*)
kv-container : #(#S(CL-MONGO::PAIR :KEY year :VALUE 1992)
#S(CL-MONGO::PAIR :KEY month :VALUE 1)
#S(CL-MONGO::PAIR :KEY day :VALUE 1))
Run Code Online (Sandbox Code Playgroud)
但是,我可以不必写下结构的所有字段,而是以编程方式获取它们的名称和值吗?毕竟,我的 lisp 运行时可以做到这一点:
REPL--> (describe *date1*)
#S(MYDATE :YEAR 1992 :MONTH 1 :DAY 1)
[structure-object]
Slots with :INSTANCE allocation:
YEAR = …Run Code Online (Sandbox Code Playgroud) c++ ×1
c++11 ×1
chess ×1
common-lisp ×1
eclipse ×1
eclipse-cdt ×1
elisp ×1
emacs ×1
fen ×1
ide ×1
json ×1
kubernetes ×1
org-mode ×1
postgresql ×1