Несколько значений для поля ввода [дубликат]

На Java существует множество библиотек JSON.

Наиболее известными являются: Джексон, GSON, Genson, FastJson и org.json.

Обычно есть три вещи следует искать для выбора любой библиотеки:

  1. Производительность
  2. Простота использования (код прост для записи и разборчивости) - это касается функций.
  3. Для мобильных приложений: зависимость / размер jar

В частности, для библиотек JSON (и любых сериализационных / десериализационных библиотек) также важна привязка данных, поскольку она устраняет необходимость написания кода котельной пластины для упаковки / распаковки данных.

Для 1 см. этот тест: https://github.com/fabienrenaud/java-json-benchmark Я использовал JMH , который сравнивает (jackson, gson, genson, fastjson, org.json, jsonp) производительность сериализаторов и десериализаторов с использованием API потоков и данных. Для 2 вы можете найти множество примеров в Интернете. Вышеупомянутый эталон также может быть использован в качестве источника примеров ...

Быстрое выведение теста: Джексон выполняет в 5-6 раз лучше, чем org.json, и более чем в два раза лучше, чем GSON.

Для вашего конкретного примера следующий код расшифровывает ваш json с помощью jackson:

public class MyObj {

    private PageInfo pageInfo;
    private List posts;

    static final class PageInfo {
        private String pageName;
        private String pagePic;
    }

    static final class Post {
        private String post_id;
        @JsonProperty("actor_id");
        private String actorId;
        @JsonProperty("picOfPersonWhoPosted")
        private String pictureOfPoster;
        @JsonProperty("nameOfPersonWhoPosted")
        private String nameOfPoster;
        private String likesCount;
        private List comments;
        private String timeOfPost;
    }

    private static final ObjectMapper JACKSON = new ObjectMapper();
    public static void main(String[] args) throws IOException {
        MyObj o = JACKSON.readValue(args[0], MyObj.class); // assumes args[0] contains your json payload provided in your question.
    }
}

Сообщите мне, если у вас есть какие-либо вопросы.

6
задан csguimaraes 10 March 2014 в 18:40
поделиться

4 ответа

Если вам нужно несколько значений в одном параметре, вы должны называть его как parameter[]

f.e.:

<form action="process.php">
<input type="checkbox" name="parameter[]" value="oats"> Oats
<input type="checkbox" name="parameter[]" value="beans"> Beans
<input type="hidden" name="parameter[]" value="a"/>
<input type="submit" value="Submit"/>
</form>
11
ответ дан Pablo Martinez 5 September 2018 в 07:23
поделиться

Существует очень полезный метод для динамической группировки данных.

<form action="file.php" method="post">

<?php for ( $i = 0; $i < count( $something ); $++ ) { ?>
    <input type="checkbox" name="<?php $something[$i]; ?>[]" value="user_id"> Oats
    <input type="checkbox" name="<?php $something[$i]; ?>[]" value="user_name"> Beans
<?php } ?>
<input type="submit" value="Submit"/>
</form>
1
ответ дан Artem Solovev 5 September 2018 в 07:23
поделиться

Меня действительно интересовали только флажки, которые были проверены на самом деле, поэтому я построил myfunc() из других примеров, таких как:

function myfunc(){
    $('#void input[type="checkbox"]').each(function(id,elem){
        if ( ! $(this).is(':checked') ) return;
        b = $("#res").val();
        if(b.length > 0){
            $("#res").val( b + ',' + $(this).val() );
        } else {
            $("#res").val( $(this).val() );
        }
    });
    var stuff = $("#res").val();
    if ( stuff.length < 1 ) {
        alert('Please select at least one');
    } else {
        $("#real").submit();
    }
}
0
ответ дан drchuck 5 September 2018 в 07:23
поделиться

Более или менее здесь идея: первая форма, 1 скрытый ввод поймает все ваулы второй и пустой формы

<script type="text/javascript">
function myfunc(){
    $('#void input').each(function(id,elem){
         b = $("#res").val();
         if(b.length > 0){
            $("#res").val( b + ',' + $(this).val() );
        } else {
            $("#res").val( $(this).val() );
        }

    });
        alert("VAL "+$("#res").val());
    $("#real").submit();

return false;
}

</script>

<form id="real" action="process.php">
<input id="res" type="hidden" name="parameter" value=""/>
</form>

<form id="void">
<input type="checkbox" name="option1" value="oats"> Oats
<input type="checkbox" name="option2" value="beans"> Beans
<input type="hidden" name="parameter" value="a"/>
<input type="submit" value="Submit" onClick="javascript:myfunc()"/>
</form>

добавит исправление, отправьте правильную форму. Протестировано на jsfiddle:

Пример работы JsFiddel

ДОБАВИТЬ ОДИН РАЗМЕР ВЕРСИИ

Вы должны знать имя поле и игнорировать другие параметры в ответе

<script type="text/javascript">
function myfunc(){
    // can use more selector
    $('#real input').each(function(id,elem){
        // append the data to this field so no need to process it
        if(this.id == 'res'){
            return;                
        }
        // here I concat the values 
        b = $("#res").val();
        if(b.length > 0){
            $("#res").val( b + ',' + $(this).val() );
        } else {
            $("#res").val( $(this).val() );
        }

    });
    alert("VAL "+$("#res").val());  // remove me
    $("#real").submit();

    return false;
}

</script>

<form id='real' method='POST' action="#">
<input type="checkbox" name="option1" value="oats"> Oats
<input type="checkbox" name="option2" value="beans"> Beans
<input id="res" type="hidden" name="parameter" value="a"/>
<input type="submit" value="Submit" onClick="javascript:myfunc()"/>
</form>​
0
ответ дан Ivan Buttinoni 5 September 2018 в 07:23
поделиться
Другие вопросы по тегам:

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