2016-01-12 7 views
0

Я пытаюсь прочитать переменную среды из объекта JSON, который выглядит следующим образом:C# .net - читать JSON

{ 
    "staging_env_json": {}, 
    "running_env_json": {}, 
    "system_env_json": { 
    "EN_VAR_NAME": { 
     "mysql": [ 
     { 
      "name": "name-here", 
      "label": "label-here", 
      "tags": [ 
      "mysql", 
      "relational" 
      ], 
      "plan": "", 
      "credentials": { 
      "hostname": "host", 
      "port": "port", 
      "name": "name-here", 
      "username": "username", 
      "password": "password", 
      } 
     } 
     ] 
    } 
    } 
} 

Использование C# как бы я получить доступ к имени пользователя и пароля? Я пробовал это ....

envVariable = Environment.GetEnvironmentVariable("EN_VAR_NAME");  
var obj = JObject.Parse(envVariable); 
var hostname = (string)obj["mysql"]["credentials"]["username"]; 

Но это не дает мне, где .. кто-нибудь может указать мне в правильном направлении?

+2

http://www.newtonsoft.com/json –

+0

Very неискренний @Lee, но это то, что 'JObject.Parse() 'из. – CodeCaster

+2

Ваш JSON недействителен; попробуйте запустить его через jsonlint.com. –

ответ

1
dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(envVariable); 
var userName = ((dynamic)obj).system_env_json.EN_VAR_NAME.mysql[0].credentials.username 
+0

Спасибо! Это сработало – samcooper11

+0

Извините, если это глупый вопрос, но где есть объект mysql в объекте JSON, это фактически возвращается как p-mysql, но я не могу его использовать с помощью этого: var hostname = obj.system_env_json.EN_VAR_NAME.p-mysql [0] .credentials.username; так как ему не нравятся какие-либо идеи о том, как я могу это разрешить? – samcooper11

+1

Это должно сработать. ((dynamic) obj) .system_env_json.EN_VAR_NAME ["p-mysql"] [0] .credentials.username – joordan831

1

Вы можете разобрать его как динамическая:

dynamic result = JsonConvert.DeserializeObject<dynamic>(input); 
Console.WriteLine(result.system_env_json.EN_VAR_NAME.mysql[0].credentials.username); 
+0

Спасибо! это сработало :-) – samcooper11

Смежные вопросы