小编Ala*_*gan的帖子

PostgreSQL - jsonb_each

我刚刚开始在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)

postgresql jsonb

12
推荐指数
1
解决办法
6878
查看次数

RabbitMQ - 连接远程服务器时的主机名是什么?

我刚刚开始使用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)

rabbitmq

7
推荐指数
1
解决办法
6064
查看次数

F#遍历序列并为序列的每个元素调用一个函数

我需要为一个序列的每个元素调用一个函数,目前我已经尝试过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)

f# sequence

5
推荐指数
1
解决办法
3396
查看次数

在C#中使用F#类型

我有一个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)

c# f# types

5
推荐指数
1
解决办法
314
查看次数

使用json.net和包含@符号的json属性反序列化为F#类型

我有一个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)

我相信这可能与属性名称中的@符号有关.

对解决方案的任何想法都会很棒.

f# json.net

5
推荐指数
1
解决办法
718
查看次数

Powershell铸造到F#区别联盟

我有一个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?

powershell f#

4
推荐指数
1
解决办法
128
查看次数

初学者SQL Developer,需要从查询中排除一些结果

我有一个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)

在此先感谢您的帮助

sql

3
推荐指数
1
解决办法
247
查看次数

F# MvcWebApi - 邮递员 - FromBody 始终为 null

我刚刚开始尝试使用 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 在此输入图像描述

在此输入图像描述

asp.net-mvc f# postman

2
推荐指数
1
解决办法
1279
查看次数

F#附加到循环中的列表

我正在寻找将此代码转换为使用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# list

0
推荐指数
1
解决办法
1201
查看次数

标签 统计

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