Для извлечения из json вы должны использовать jq, если можете. По словам авторов, «jq - это как sed для данных JSON» (источник) .
В вашем случае это должно быть:
$ jq -r '.project' output.json | jq -r '.content' | jq '.[] | select(.name=="ABC")' | jq -r '.location'
Вывод будет:
NewYork
Чтобы получить вывод, который вам требуется, так:
"location":"NewYork"
Вы можно использовать:
echo "\"location\":$(jq -r '.project' output.json | jq -r '.content' | jq '.[] | select(.name=="ABC")' | jq '.location')"
Перед тем, как использовать jq, вы должны установить его в Debian и Ubuntu. Это будет:
$ sudo apt install jq
для других ОС, вам следует проверить этот сайт [116 ].
Можно сделать это как это:
string.Format("{0}://{1}:{2}", Request.Url.Scheme, Request.Url.Host, Request.Url.Port)
И Вы получите универсальный синтаксис URI <протокол>://<хост>: <порт>
Можно использовать что-то вроде этого.
System.Web.HttpContext.Current.Server.ResolveUrl("~/")
Это отображается на корень приложения. теперь, если Вы будете в виртуальном каталоге, то необходимо будет сделать немного больше работы.
Править
Старая регистрация содержала неправильный вызов метода!
Мне действительно нравится способ, которым CMS обработал этот вопрос лучшее, с помощью Строки. Формат и Страница. Переменные запроса. Я был бы точно так же, как для тонкой настройки его немного. Я просто протестировал его на одной из моих страниц, таким образом, я скопирую код здесь:
String baseURL = string.Format(
(Request.Url.Port != 80) ? "{0}://{1}:{2}" : "{0}://{1}",
Request.Url.Scheme,
Request.Url.Host,
Request.Url.Port)
Этот метод обрабатывает http/https, номера портов и строки запроса.
'Returns current page URL
Function fullurl() As String
Dim strProtocol, strHost, strPort, strurl, strQueryString As String
strProtocol = Request.ServerVariables("HTTPS")
strPort = Request.ServerVariables("SERVER_PORT")
strHost = Request.ServerVariables("SERVER_NAME")
strurl = Request.ServerVariables("url")
strQueryString = Request.ServerVariables("QUERY_STRING")
If strProtocol = "off" Then
strProtocol = "http://"
Else
strProtocol = "https://"
End If
If strPort <> "80" Then
strPort = ":" & strPort
Else
strPort = ""
End If
If strQueryString.Length > 0 Then
strQueryString = "?" & strQueryString
End If
Return strProtocol & strHost & strPort & strurl & strQueryString
End Function
Мне пришлось иметь дело с чем-то похожим, мне нужен был способ программно установить тег, указывающий на корень моего веб-сайта.
Принятое решение не работало для меня из-за локального хоста и виртуальные каталоги.
Итак, я придумал следующее решение, оно работает на локальном хосте с виртуальными каталогами или без них и, конечно же, на веб-сайтах IIS.
string.Format("{0}://{1}:{2}{3}", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, ResolveUrl("~")
Сочетая лучшее из того, что я видел по этому вопросу до сих пор, этот вариант заботится о:
приложении, размещенном в подпапке корня
string url = String.Format(
Request.Url.IsDefaultPort ? "{0}://{1}{3}" : "{0}://{1}:{2}{3}",
Request.Url.Scheme, Request.Url.Host,
Request.Url.Port, ResolveUrl("~/"));