错误消息:"Operation value must be a number",关于创建新的 JIRA 问题

Error message: "Operation value must be a number", on creation of new JIRA issue

在 VBA 中使用 REST API 创建新的 JIRA 问题时,我收到自定义字段 13744 的以下错误消息:"Operation value must be a number"。

我在没有数字字段的情况下测试了以下代码,一切正常,问题已创建并且所有其他字段值都已传递:

Public Pass As Variant    
 Sub criarIssue()

    Dim JiraService As New MSXML2.XMLHTTP60
    Dim sErg As Variant
    Dim sRestAntwort As Variant
    Dim sSummary As Variant
    Dim sDescription As Variant
    Dim sProject As Variant
    Dim sIssueType As Variant
    Dim sData As Variant
    Dim sPath As Variant
    Dim sUsername As Variant
    Dim sPassword As Variant
    Dim sAux As Variant
    Dim sStatus As Variant
    Dim sEncbase64Auth As Variant

    sUsername = Environ$("UserName")
    Senha.Show

    sPassword = Pass

    sSummary = ActiveSheet.Range("C3").Value 'Issue name
    sIssueType = "Projeto"
    sProject = "EXP"

    sData = " { ""fields"" : { ""project"" : { ""key"" : """ & sProject & """ }, ""summary"" : """ & _
    sSummary & """, ""issuetype"" : { ""name"" : """ & sIssueType & """}, ""customfield_13744"" : ""1234"", ""customfield_13663"" : {""name"" : ""vitor.ribeiro""}, ""customfield_13670"" : ""2019-01-23 00:00:00"", ""customfield_13671"" :  {""value"" : ""SP"" , ""child"" : {""value"" : ""SAO PAULO"" }}}} "

    sEncbase64Auth = EncodeBase64(sUsername & ":" & sPassword)

    'Creates Issue
    With JiraService
        .Open "POST", "http://172.16.2.128:8080/rest/api/2/issue/", False
        .SetRequestHeader "Content-Type", "application/json"
        .SetRequestHeader "Accept", "application/json"
        .SetRequestHeader "X-Atlassian-Token", "nocheck"
        .SetRequestHeader "Authorization", "Basic " & sEncbase64Auth
        .Send (sData)
        sRestAntwort = .ResponseText
        sStatus = .Status & " | " & .StatusText
    End With

    ' JSON Response
    sAux = Replace(sRestAntwort, "{", "")
    sAux = Replace(sAux, "}", "")
    sAux = Split(sAux, ",")
    sAux = sAux(1)
    sAux = Split(sAux, ":")
    sAux = sAux(1)
    sAux = Replace(sAux, """", "")

    ActiveSheet.Range("J2").Value = sStatus
    ActiveSheet.Range("J3").Value = sRestAntwort & " | " & sAux
    ActiveSheet.Range("J4").Value = ActiveSheet.Range("J4").Value + 1
    ActiveSheet.Range("C2").Value = sAux

    With JiraService
    .Open "DELETE", "http://172.16.2.128:8080/rest/auth/1/session", False
        .Send
        End With


End Sub



Public Function EncodeBase64(text As String) As String

    Dim arrData() As Byte
    arrData = StrConv(text, vbFromUnicode)

    Dim objXML As MSXML2.DOMDocument
    Dim objNode As MSXML2.IXMLDOMElement

    Set objXML = New MSXML2.DOMDocument
    Set objNode = objXML.createElement("b64")

    objNode.DataType = "bin.base64"
    objNode.nodeTypedValue = arrData
    EncodeBase64 = objNode.text

    Set objNode = Nothing
    Set objXML = Nothing

End Function

除自定义字段 13744 值外,所有值均已顺利传递。

对于这个,我收到以下错误消息:

{"errorMessages":[],"errors":{"customfield_13744":"Operation value must be a number"}

为什么不能识别为数字?

事实证明,我只需要按照@cyboashu 的建议传递不带引号的数值。现在可以使用了。

您必须删除标点符号“