我刚刚开始在postgres上玩jsonb并找到难以在网上找到的例子,因为它是一个相对较新的概念.我正在尝试使用jsonb_each_text打印出一个键和值表,但在一个列中得到一个csv.
我将以下json保存为jsonb并使用它来测试我的查询.
{
"lookup_id": "730fca0c-2984-4d5c-8fab-2a9aa2144534",
"service_type": "XXX",
"metadata": "sampledata2",
"matrix": [
{
"payment_selection": "type",
"offer_currencies": [
{
"currency_code": "EUR",
"value": 1220.42
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我可以访问offer_currencies数组
SELECT element -> 'offer_currencies' -> 0
FROM test t, jsonb_array_elements(t.json -> 'matrix') AS element
WHERE element ->> 'payment_selection' = 'type'
Run Code Online (Sandbox Code Playgroud)
给出"{"值":1220.42,"currency_code":"EUR"}"的结果,所以如果我运行以下查询我得到(我必须更改"for")
select * from jsonb_each_text('{"value": 1220.42, "currency_code": "EUR"}')
Key | Value
---------------|----------
"value" | "1220.42"
"currency_code"| "EUR"
Run Code Online (Sandbox Code Playgroud)
所以使用上面的理论我创建了这个查询
SELECT jsonb_each_text(data)
FROM (SELECT element -> 'offer_currencies' -> 0 AS data
FROM test t, jsonb_array_elements(t.json …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用rabbitmq,目前正在研究rabbitmq网站上的教程。我已经使用本地计算机作为服务器完成了 hello world 教程。现在我想连接到另一台计算机上的远程服务器。我的问题是我需要用来连接到该服务器的主机名是什么。是安装rabbitmq服务器的机器的IP地址吗?
RabbitMQ.Client.ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.HostName = "XXX.X.X.X";
connectionFactory.UserName = "admin";
connectionFactory.Password = "test";
connectionFactory.VirtualHost = "vHost";
connectionFactory.Port = AmqpTcpEndpoint.UseDefaultPort;
Connection = connectionFactory.CreateConnection();
Run Code Online (Sandbox Code Playgroud) 我需要为一个序列的每个元素调用一个函数,目前我已经尝试过Seq.iter和Seq.map但它们分别返回单位和'a - >'c而不是我需要的Json.
我试过了
Seq.iter (fun _ (a,b,c,d) -> iterateThroughMySequnce a b c d ()) sequence
Seq.fold (fun _ (a,b,c,d) -> iterateThroughMySequnce a b c d ()) sequence
Run Code Online (Sandbox Code Playgroud)
但我没有得到Json的预期回报类型.在下面的评论中写着"像这样的东西"的代码需要
谁能帮忙谢谢
open Newtonsoft.Json.Linq
type Json =
| JObj of Json seq
| JProp of string * Json
| JArr of Json seq
| JVal of obj
let (!!) (o: obj) = JVal o
let rec toJson = function
| JVal v -> new JValue(v) :> JToken
| JProp(name, (JProp(_) as …Run Code Online (Sandbox Code Playgroud) 我有一个C#web api用于访问F#库.我创建了一个我想要返回的类型的DU,并使用模式匹配来选择哪个返回到c#控制器.
在C#控制器中,如何访问从函数调用返回到F#库的类型的数据?
C#控制器
public HttpResponseMessage Post()
{
var _result = Authentication.GetAuthBehaviour();
//Access item1 of my tuple
var _HTTPStatusCode = (HttpStatusCode)_result.item1;
//Access item2 of my tuple
var _body = (HttpStatusCode)_result.item2;
return base.Request.CreateResponse(_HTTPStatusCode, _body);
}
Run Code Online (Sandbox Code Playgroud)
F#类型
module Types =
[<JsonObject(MemberSerialization=MemberSerialization.OptOut)>]
[<CLIMutable>]
type ValidResponse = {
odata: string;
token: string;
}
[<JsonObject(MemberSerialization=MemberSerialization.OptOut)>]
[<CLIMutable>]
type ErrorResponse = {
code: string;
message: string;
url: string;
}
type AuthenticationResponse =
| Valid of int * ValidResponse
| Error of int * ErrorResponse
Run Code Online (Sandbox Code Playgroud)
F#功能
module Authentication …Run Code Online (Sandbox Code Playgroud) 我有一个F#类型,我从HTTP Web请求的内容反序列化到一个对象.我正在调用的API使用odata协议,该请求的内容具有以下格式并包含密钥@odata.context.
{
"@odata.context":"OData",
"Value":"token"
}
Run Code Online (Sandbox Code Playgroud)
我使用Json.net将内容反序列化为我的F#类型,F#类型如下
type Success = {
[<JsonProperty(PropertyName = "@odata.context")>]
``odata.context``: string;
Value: string; }
Run Code Online (Sandbox Code Playgroud)
odata.context总是null在这种情况下.
我已经尝试了以下两种方法(在F#类型属性名称中使用@符号),结果为NULL
let test1 = JsonConvert.DeserializeObject<Success>("{\"@odata.context\": \"odata.context\", \"Value\": \"token\"}"))
Run Code Online (Sandbox Code Playgroud)
(在F#类型属性名称中没有@符号)这会正确反序列化.
let test2 = JsonConvert.DeserializeObject<Success>("{\"odata.context\": \"odata.context\", \"Value\": \"token\"}"))
Run Code Online (Sandbox Code Playgroud)
我相信这可能与属性名称中的@符号有关.
对解决方案的任何想法都会很棒.
我有一个Powershell脚本,我已经加载了一个F#库并创建了一个F#记录表达式:
$teacher = Data+Teacher("Joan", "Doe", 27)
Run Code Online (Sandbox Code Playgroud)
现在我需要传递$teacher给一个函数,但在我做之前我需要将它向上转换为类型SchoolEmployee.当我尝试:
$schoolEmployee = $teacher -as [Data+SchoolEmployee]
Run Code Online (Sandbox Code Playgroud)
我有一个空的物体回来了.在我的F#模块中,我有一个有区别的联盟:
module Data =
type SchoolEmployee =
| Teacher of Teacher
| Cleaner of Cleaner
Run Code Online (Sandbox Code Playgroud)
我如何向一个F#受歧视的联盟类型转发Powershell?
我有一个SQL查询来显示stage_time表中stage_times的所有总和.但是我只需要为所有3个阶段输入值的汽车使用stage_times的总和,因此在这种情况下car_no 3被排除在列表之外;
这是一个带有我的示例代码http://sqlfiddle.com/#!2/1675d/78的sqlfiddle
SELECT d.*, SUM(Stage_Time) AS total
FROM Driver d, Stage_Times st
WHERE st.Driver_Id = d.Driver_Id AND st.Event_Id = 1
AND st.Stage_Id <= 3
GROUP BY d.Driver_Id
ORDER BY total;
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助
我刚刚开始尝试使用 F# MvcWebApi。我从基本模板开始,并设法将其工作到将数据放置在邮递员请求正文中的程度。每次我尝试访问从主体传递的任何值时,由于某种原因它们总是为空,即(在下面的情况下数据将始终为空)任何人都可以帮助我解决这个问题
值控制器代码
type ValuesController() =
inherit ApiController()
//Always returs null
member x.Post ([<FromBody>] data:string) = data
//Works
member x.Post ([<FromBody>] data:string) = "Succesful"
Run Code Online (Sandbox Code Playgroud)
我正在使用邮递员调用 api


我正在寻找将此代码转换为使用F#列表而不是C#列表实现。
我连接到数据库并通常使用C#运行查询会创建一个类型的列表,并在datareader具有值时继续添加该列表。我将如何将其转换为使用F#列表
let queryDatabase (connection: NpgsqlConnection) (queryString: string) =
let transactions = new List<string>()
let command = new NpgsqlCommand(queryString, connection)
let dataReader = command.ExecuteReader()
while dataReader.Read() do
let json = dataReader.GetString(1)
transactions.Add(json)
transactions
Run Code Online (Sandbox Code Playgroud) f# ×6
asp.net-mvc ×1
c# ×1
json.net ×1
jsonb ×1
list ×1
postgresql ×1
postman ×1
powershell ×1
rabbitmq ×1
sequence ×1
sql ×1
types ×1