Библиотека Eiffel: JSON_OBJECT.item и общий метод для получения контента - PullRequest
0 голосов
/ 20 декабря 2018

Если я хочу иметь значение содержимого в виде строки JSON_OBJECT.item ("ключ") без необходимости

some_json_value_as_string: STRING
    do
        if attached {JSON_STRING} l_json_o as l_s then
            Result := l_s.unescaped_string_8
        elseif attached {JSON_NUMBER} l_json_o as l_n then
            Result := l_n.item.out
        else
            check
                you_forgot_to_treat_a_case: False
            end
        end
    end

для объекта json, например

{
|       |       "datasource_name": "DODBC",
|       |       "datasource_username": "dev_db_usr",
|       |       "datasource_password": "somePassword",
|       |       "ewf_listening_port": 9997,
|       |       "log_file_path": "/var/log/ewf_app.log",
|       |       "default_selected_company": 1,
|       |       "default_selected_branch": 1,
|       |       "default_selected_consumption_sector": 1,
|       |       "default_selected_measuring_point": 1,
|       |       "default_selected_charge_unit": -1
|       }

,{JSON_VALUE}.representation с io.putstring:

datasource_username=dev_db_usr

, а не только значение !!!

есть ли способ сделать это?Я не нашел интуитивно понятными различные методы JSON_VALUE: значения, так как метод out дает адрес класса и указателя, который действительно далек от строкового представления связанного объекта json для меня ...

1 Ответ

0 голосов
/ 20 декабря 2018

Функция {JSON_VALUE}.representation является строковым представлением значения Current JSON.

Хорошо, но если у вас есть jo: JSON_OBJECT, а затем предположим, что у вас есть datasource_username_key: STRING = "datasource_username"

Вы можете сделать
if attached jo.item (datasource_username_key) as l_value then print (l_value.representation) end

...