- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在读取一个 HTML 文件,需要将其作为字符串参数传递给 JSON 调用。HTML 中有用于 css/样式的花括号。我在看这个 question ,但我的更多是关于 JSON 特殊字符,其中一个是其他转义字符。该文件还可能包含 [] 个字符。
$HtmlFromFile2 = @"
<html>
<style type="text/css">.LetterList {font-family:"arial"}</style>
<body>
To [firstname]:
This is a normal body with special JSON characters.
</body>
</html>
"@
$HtmlFromFile2Stripped = $HtmlFromFile2.Replace("`r", "").Replace("`n", "").Replace("`t","")
#$HtmlFromFileFixed = % { [System.Text.RegularExpressions.Regex]::Unescape($HtmlFromFile2Stripped) }
$HtmlFromFileFixed = $HtmlFromFile2Stripped.Replace("{","\{").Replace("}","\}")
Write-Host "After RegEx Fix"
Write-Host $HtmlFromFileFixed
$templateID = "Test_Temp7"
$body = @"
{ "uuid": "$templateID",
"subject": "My Email Subject",
"body": "$HtmlFromFileFixed"
}
"@
# This also tests if our JSON is "well-formed", on extra or missing commas, braces, brackets, etc...
$bodyJSON = ConvertFrom-Json $body
# Write-Host $body
$params = @{
Uri = 'https://stage-tms.demo.com/templates/email'
Headers = $headers
Method = 'POST'
Body = "$body"
ContentType = 'application/json'
}
#Invoke-RestMethod @params
我使用 Convert-FromJSON 作为测试。当它起作用时,通常 Invoke-RestMethod 就会起作用。当 Convert-FromJSON 失败时,Invoke-RestMethod 将返回 http statsu=400 和 statusDescription="Bad Request"。
当前错误:
ConvertFrom-Json : Invalid object passed in, ':' or '}' expected. (137): { "uuid": "FEMAImport_Home_Test_Temp7",
"subject": "SBA Disaster Loan Assistance TestText",
"body": "<html> <style type="text/css">.sbaLetterList \{font-family:"arial"\}</style><body> This is a
normal body with special JSON characters. </body></html>"
}
At C:\Scripts\TestJSONEscapeBraces.ps1:38 char:13
+ $bodyJSON = ConvertFrom-Json $body
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
更新 1:我又做了一些测试。我最终得到了有效和无效的排列组合。我不能包含我正在使用的整个 HTML 文件;我需要一种技术来隔离错误并识别它们。我希望 ConvertFrom-JSON 能为我做到这一点。
从下面,您可以看到我正在尝试的不同文件。第一个(真实文件和较大的文件)在 ConvertFrom-JSON 和 REST/Post 上均失败。另外两个现在可以正常工作。
$HtmlBodyFilename = "$PSScriptRoot\Emailbody_Home.html"
#$HtmlBodyFilename = "$PSScriptRoot\Emailbody_Home_SimpleTest.html"
#$HtmlBodyFilename = "$PSScriptRoot\Emailbody_Home_SimpleTestWithBraces.html"
$HtmlFromFile = Get-Content $HtmlBodyFilename -Raw #the -Raw option gets a string instead of an array of lins
$HtmlFromFileStripped = $HtmlFromFile.Replace("`r", "").Replace("`n", "").Replace("`t","")
我现在能够读取和处理一个带有花括号的简单小测试文件。但是当我指向磁盘上真正的 HTML 文件时,我得到了错误,并且不知道如何隔离它。我可能以为是花括号。
如果我使用 ConvertFrom-JSON 和真正的 HTML 文件,我会得到:ConvertFrom-Json:传入的对象无效,预期为“:”或“}”。 (143):{“uuid”:“FEMAImport_HomeFile_Test_Temp3”,“主题”:等...
现在,如果我删除“ConvertFrom-JSON”并使用真正的 HTML 文件,我会从 SOAP 请求中收到此错误:“请求已中止:连接意外关闭。”当然,一个区别是文件要大得多,大约 83KB。
在此之前,我收到了很多 400 “Bad Request” 错误,这是一个无用的错误。我需要知道请求有什么问题。
最佳答案
让 Powershell 为您完成所有工作,不要自己构建 JSON 字符串,使用一个对象:
$body = ConvertTo-Json @{
uuid = $templateID
subject = "My Email Subject"
body = Get-Content $HtmlBodyFilename -Raw
}
所有特殊字符将被自动转义。
感谢@Hazrelle,当然在这种情况下你甚至不需要转换任何东西,因为 Invoke-WebRequest
会为你做这件事:
$params = @{
Uri = 'https://stage-tms.demo.com/templates/email'
Headers = $headers
Method = 'POST'
Body = @{
uuid = $templateID
subject = "My Email Subject"
body = Get-Content $HtmlBodyFilename -Raw
}
ContentType = 'application/json'
}
关于PowerShell - 如何在 REST 调用的 JSON 字符串中转义 {},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69647261/
我有一个 javascript 从用户输入中读取的 URL。这是 JavaScript 代码的一部分: document.getElementById("Snd_Cont_AddrLnk_BG").v
我将如何在 javascript 中转义斜杠// var j = /^(ht|f)tp(s?)://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$;/ 最佳答案 使用 \ 进行转
在解析到这样的对象之前,我要转义 & 和 =: var obb = parseJSON('{"' + text.replace(/&/g, "\",\"").replace(/=/g,"\":\"")
我正在使用 freemarker 生成一个 freemarker 模板。但我需要一些方法来转义 freemarker 标签。 我将如何逃脱 标签或 ${expression} ? 最佳答案 您也可以使
我正在尝试匹配方括号,即 excel 中正则表达式 VBA 中的 []。我正在尝试使用以下代码,但它不起作用。 Public Function IsSpecial(s As String) As L
我通过设置将 PowerShell 添加到我的上下文菜单中: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\she
我需要转义 $,因此我需要将所有出现的 $ 替换为 \$ 所以我写了这个方法: // String#replaceAll(String regex, String replacement) publi
我正在格式化我的问题。非常遗憾。这是我的问题的摘要 在 JSP 中我有一个字段 我输入的值类似于“cQN==ujyRMdr+Qi8dO9Xm*eRun+ner==aLTyt?aKmGI” 实际行动
我有一个文本文件,其内容是C:\temp 我想要值 C:\temp替换为从变量定义的不同值 此外,将从批处理文件(windows .cmd)中调用 perl oneliner set CMDDIR=C
有没有办法使用 jTemplates 来转义 {$,这样我就可以在 onBlur 中使用内联 javascript,例如 telegraaf 在 processTemplate 之后得到这个: 谢谢
我正在尝试将 wget 与包含“#”符号的 url 一起使用。无论我做什么来逃避这个角色,它都不起作用。我用过\、' 和 "。但它们都不起作用。有人有什么建议吗? 谢谢! 最佳答案 如果您真的想让它有
我想知道如何从数据库中回显带有 $ 符号的字符串。此时,数据库中的值“Buy one for $5.00”将转换为“Buy one for .00”。 假设该字段的名称为 title,值为 Buy o
我在 mySQL 中有一个查询,旨在返回我们网站上使用的搜索词。是的,这是一个标签云,是的,我知道它是一条鲻鱼 :) 我们有一个管理页面,管理员可以在其中查看搜索词并选择将它们排除在云端之外。这些词进
我有一个文本区域。在其点击事件上。我将其插入数据库中,然后将其显示为元素列表中的第一个元素。问题是。如果我输入""在textarea中,jquery无法正确显示。它显示为空。代码是 var note
我想知道是否有某种字符串前缀,这样 cstring 就可以按原样使用,而不需要我转义所有字符。我不是 100% 确定。我记得一些关于在字符串前加上 @ 符号( char str[] = @"some\
这个问题在这里已经有了答案: How do I escape curly-brace ({}) characters in a string while using .format (or an f
C/C++编译器如何操作源代码中的转义字符["\"]?如何编写用于处理该字符的编译器语法?遇到那个字符后,编译器会做什么? 最佳答案 大多数编译器分为几个部分:编译器前端称为 lexical anal
我计划接受用户输入,并将其插入到一个 div 中 user_content 一个用户提供内容,另一个用户接收内容。 我认为我会遵循的建议来自 https://www.owasp.org/index.p
我有一个这种形式的 url - http:\\/\\/en.wikipedia.org\\/wiki\\/The_Truman_Show。我怎样才能使它成为正常的网址。我试过使用 urllib.unq
我有一个带有转义数据的字符串 escaped_data = '\\x50\\x51' print escaped_data # gives '\x50\x51' 什么 Python 函数会对其进行反转
我是一名优秀的程序员,十分优秀!