2014-12-17 2 views
0

Я закончил макрос, который отправляет запрос API и получает ответ в формате JSON. Затем результаты возвращаются в Лист («результаты»). Я также создаю отдельный файл журнала. Проблема заключается в том, что выход не в стандартном формате JSON, как:VBA JSON войти в TXT ""

{ 
     "title": "Example Schema", 
     "type": "object", 
     "properties": { 
      "firstName": { 
       "type": "string" 
      }, 
      "lastName": { 
       "type": "string" 
      }, 
      "age": { 
       "description": "Age in years", 
       "type": "integer", 
       "minimum": 0 
      } 
     }, 
     "required": ["firstName", "lastName"] 
    } 

Но действительно есть «первенствует требуется» двойные кавычки:

"{ 
     ""title"": ""Example Schema"", 
     ""type"": ""object"", 
     ""properties"": { 
      ""firstName"": { 
       ""type"": ""string"" 
      }, 
      ""lastName"": { 
       ""type"": ""string"" 
      }, 
      ""age"": { 
       ""description"": ""Age in years"", 
       ""type"": ""integer"", 
       ""minimum"": 0 
      } 
     }, 
     ""required"": [""firstName"", ""lastName""] 
    }" 

Мой макрос выглядит как (немного укороченная):

'output path 
Dim FF As Integer 
    FF = FreeFile 
Dim FilePath As String 

    FilePath = ActiveWorkbook.Path & "\Log" & Format(Now(), "yyyymmdd") & ".txt" 

Open FilePath For Append As FF 

sJson = "" 
'turncated here ... 


ObjHttp.Open "POST", sURL, False 
ObjHttp.setRequestHeader "Content-Type", "application/json" 
ObjHttp.send (sJson) 
xmlDoc.LoadXML (ObjHttp.responseText) 

'log 
Dim LastRow As Long 
With ThisWorkbook.Sheets("Result") 
     LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
End With 

Sheets("Result").Cells(LastRow + 1, 1) = Now() 
Sheets("Result").Cells(LastRow + 1, 2) = ObjHttp.responseText 

Write #FF, ObjHttp.responseText 

Next i 

Close #FF 

End Sub 

Что мне нужно изменить, чтобы удалить двойные кавычки?

Большое спасибо заранее.

+0

выглядят вверх [ 'Заменить()' функция] (http://msdn.microsoft.com/en-us/library/gg264409 (v = office.14) .aspx) –

+0

Когда я пишу #FF, Replace (ObjHttp.responseText, Chr (34), ""), это полностью удалит все цитаты из текста ... когда я попытаюсь написать #FF, Заменить (ObjHttp.responseText, Chr (34) & Chr (34), Chr (34)) это ничего не сделает ... – Petrik

+1

Используйте 'Print #FF, ObjHttp.responseText' вместо' Write'. –

ответ

0

Это одна заменяет двойные кавычки, знаки опалить кавычки

Dim findChars, replaceChars As String 

findChars = """""" 

replaceChars = """" 

Replace(ObjHttp.responseText, findChars, replaceChars)