Как получить формат json для объекта mongodb [duplicate]

Синтаксис

для запуска в Windows при использовании wscript:

wscript.exe "C:\path\example.vbs" "your email address" "who your sending it to" "your subject" "your body text & vbCRLF & for new line" "c:\path\attachment"

требуется «", потому что пробелы через порядок и окна отправляются ошибки, если пробелы находятся в пути

dim mailto
dim mailfrom
dim subject
dim body
dim attachment
mailfrom = WScript.Arguments.Item(0)
mailto = WScript.Arguments.Item(1)
subject = WScript.Arguments.Item(2)
body = WScript.Arguments.Item(3)
attachment = WScript.Arguments.Item(4)


Set emailObj      = CreateObject("CDO.Message")
emailObj.From     = mailfrom
emailObj.To       = mailto
emailObj.Subject  = subject
emailObj.TextBody = body

emailObj.AddAttachment attachment

Set emailConfig = emailObj.Configuration

emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mysmtp.com"
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing")    = 2  
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1  
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl")      = true 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername")    = "myUsername"
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword")    = "myPassword"
emailConfig.Fields.Update

emailObj.Send

If err.number = 0 then Msgbox "email sent"
8
задан user10 9 January 2013 в 11:43
поделиться

3 ответа

Вы можете сделать это двумя способами:

echo json_encode(iterator_to_array($customers));

, или вы можете вручную прокрутить его:

foreach($customers as $k => $row){
    echo json_encode($row);
}

Каждый из объектов MongoDB должен иметь свои методы __toString() правильно чтобы вернуть представление значения.

17
ответ дан Sammaye 28 August 2018 в 22:33
поделиться

Другие ответы работают, но хорошо знать, что сгенерированный JSON будет иметь следующую форму (в этом примере я использую гипотетическое поле «name» для ваших клиентов):

{
    "5587d2c3cd8348455b26feab": {
        "_id": {
            "$id": "5587d2c3cd8348455b26feab"
        },
        "name": "Robert"
    },
    "5587d2c3cd8348455b26feac": {
        "_id": {
            "$id": "5587d2c3cd8348455b26feac"
        },
        "name": "John"
    }
}

So в случае, если вы не хотите, чтобы Object _id был ключом каждого из ваших объектов результата, вы можете добавить параметр false в iterator_to_array. Ваш код будет выглядеть следующим образом:

echo json_encode(iterator_to_array($customers, false), true);

Это создает тот же результат, что и

$result = Array();
foreach ($customers as $entry) {
    array_push($result, $entry);
}
echo json_encode($result, true);

, который является массивом объектов JSON

[
    {
        "_id": {
            "$id": "5587d2c3cd8348455b26feab"
        },
        "name": "Robert"
    },
    {
        "_id": {
            "$id": "5587d2c3cd8348455b26feac"
        },
        "name": "John"
    }
]
3
ответ дан Joffrey 28 August 2018 в 22:33
поделиться

Это также сработает. И вы также можете настроить свой json.

    $arr = array();

    foreach($customers as $c)
    {
        $temp = array("name" => $c["name"], "phone" => $c["phone"], 
                                            "address" => $c["address"]);
        array_push($arr, $temp);
    }

    echo json_encode($arr);
8
ответ дан user10 28 August 2018 в 22:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: