как сделать JSON с тем же ключом другое значение в Java

Нет. Доступ не имеет функции GROUP_CONCAT. Тем не менее, можно создать функцию VBA, которая позволит вам передать строку, содержащую инструкцию SQL, и получить эквивалентную функциональность (не то, что я бы рекомендовал, но это возможно).

Принимая мои собственные персональный путь назад, вот какой код я написал, когда динозавры правили Землей:

Public Function ListQuery(SQL As String _
                            , Optional ColumnDelimiter As String = " " _
                            , Optional RowDelimter As String = vbCrLf) As String
'PURPOSE: to return a combined string from the passed query
'ARGS:
'   1. SQL is a valid Select statement
'   2. ColumnDelimiter is the character(s) that separate each column
'   3. RowDelimiter is the character(s) that separate each row
'RETURN VAL:
'DESIGN NOTES:

Const PROCNAME = "ListQuery"
Const MAXROWS = 100
Const MAXCOLS = 10
Dim oConn As ADODB.Connection
Dim oRS As ADODB.Recordset
Dim oField As ADODB.Field
Dim sRow As cString
Dim sResult As cString

On Error GoTo ProcErr

Set sResult = New cString
Set sRow = New cString
Set oConn = GetADOConn()

sResult.Clear
Do Until oRS.EOF
    sRow.Clear

    For Each oField In oRS.Fields
        With sRow
            If .Length > 0 Then
                .Append ColumnDelimiter
            End If

            .Append Nz(oField.Value)
        End With
    Next oField

    sRow.Trim
    If sRow.Length > 0 Then
        With sResult
            .Append sRow
            .Append RowDelimter
        End With
    End If

    oRS.MoveNext
Loop
oRS.Close
oConn.Close

With sResult
    If .Right(Len(RowDelimter)).Value = RowDelimter Then
        .Length = .Length - Len(RowDelimter)
    End If
End With

FunctionResult:
    ListQuery = sResult.Value

CleanUp:
    Set sResult = Nothing
    Set sRow = Nothing
    Set oField = Nothing
    Set oRS = Nothing
    Set oConn = Nothing

Exit Function
ProcErr:
    ' logging  code...
    Resume CleanUp

End Function

Функция GetADOConn является централизованной функцией для получения текущего соединения с базой данных. cString - это класс, который имитирует поведение класса .NET StringBuilder, но был написан задолго до того, как .NET был чем-то другим, кроме TLD и рекламной рекламой. Поскольку этот вызов вызывается в каждой строке, встроенная конкатенация строки VBA будет медленной, и поэтому вам понадобится класс StringBuilder. Исходный код (который я частично изменил) имел ограничение на количество строк и столбцов, которые могли бы использоваться, что и есть константы.

-1
задан 18 January 2019 в 02:11
поделиться

2 ответа

Если вы хотите, чтобы тот же ключ имел другое значение, вы можете сделать его в формате JSONArray.

[{"file" : "bullet01.png"}, {"file" : "bullet02.png"}, {"file" : "bullet03.png"}]

Ваш код может измениться следующим образом:

.....
JSONArray array = new JSONArray();
for(String fn : files) {
    //create json object for each file
    JSONObject data= new JSONObject();
    System.out.println(fn);
    data.put("file", fn);
    System.out.println(data);
    //put json object into json array
    array.put(data); 
}
view.setAttribute("file", array);
view.printJSON();
0
ответ дан m fauzan abdi 18 January 2019 в 02:11
поделиться

Нет, ключи в JSON должны быть уникальными. Вы можете попробовать добавить цифры в конце ключа «файл»

0
ответ дан Sathyananth Balasubramaniam 18 January 2019 в 02:11
поделиться
Другие вопросы по тегам:

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